注册

Android移植整个Demo到项目里面,用到环信的getInstance()方法都会报NullPointerException?

 单独用的时候没有问题,一移植到项目里就出现问题了,请教一下为什么?
出现问题的代码,比如:

EaseBaseActivity里的EaseUI.getInstance().getNotifier().reset();

LoginActivity里的DemoDBManager.getInstance().closeDB();和
DemoHelper.getInstance().setCurrentUserName(currentUsername)等
 
错误日志,比如:
java.lang.IllegalStateException: Could not execute method of the activity
                                                                           at android.view.View$1.onClick(View.java:3823)
                                                                           at android.view.View.performClick(View.java:4438)
                                                                           at android.view.View$PerformClick.run(View.java:18422)
                                                                           at android.os.Handler.handleCallback(Handler.java:733)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                           at android.os.Looper.loop(Looper.java:136)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5045)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:515)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                           at dalvik.system.NativeStart.main(Native Method)
                                                                        Caused by: java.lang.reflect.InvocationTargetException
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:515)
                                                                           at android.view.View$1.onClick(View.java:3818)
                                                                           at android.view.View.performClick(View.java:4438) 
                                                                           at android.view.View$PerformClick.run(View.java:18422) 
                                                                           at android.os.Handler.handleCallback(Handler.java:733) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                           at android.os.Looper.loop(Looper.java:136) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5045) 
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                           at dalvik.system.NativeStart.main(Native Method) 
                                                                        Caused by: java.lang.NullPointerException
                                                                           at com.hyphenate.chatuidemo.DemoHelper.setCurrentUserName(DemoHelper.java:953)
                                                                           at com.hyphenate.chatuidemo.ui.LoginActivity.login(LoginActivity.java:150)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                           at android.view.View$1.onClick(View.java:3818) 
                                                                           at android.view.View.performClick(View.java:4438) 
                                                                           at android.view.View$PerformClick.run(View.java:18422) 
                                                                           at android.os.Handler.handleCallback(Handler.java:733) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                           at android.os.Looper.loop(Looper.java:136) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5045) 
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                           at dalvik.system.NativeStart.main(Native Method) 
已邀请:

SunstormChen - 90后IT男

我感觉应该是初始化问题,但是我已经在app的SplashActivity中初始化了呀,初始化的代码如下:

//初始化环信 
EMOptions options = new EMOptions(); 
// 默认添加好友时,是不需要验证的,改成需要验证 
options.setAcceptInvitationAlways(false); 
//初始化 
EMClient.getInstance().init(this, options); 
//在做打包混淆时,关闭debug模式,避免消耗不必要的资源 
EMClient.getInstance().setDebugMode(true);
 
难道还需要初始化其他类吗?

SunstormChen - 90后IT男

问题已经解决了,确实是初始化的问题,官方demo是在DemoApplication里面进行初始化的,主要的代码是这个:

// 初始化环信SDK 
applicationContext = this; 
instance = this; 
//init demo helper 
DemoHelper.getInstance().init(applicationContext);
 
  将这段代码移植到自己的Application里面就好了,还要注意一点,官方里面的UI的布局需要在自己项目的清单文件里注册,然后移植到自己的项目中。
  编译的过程还出现了parse的jar包需要用到了okhttp的jar包,里面有的方法对不上,不过暂时还不影响使用,要对应的上的话,把parse的jar包换成1.13.1版本,okhttp的jar包换成3.4.1的,再加上okio的1.9.0的jar包。
  如果编译出现java.util.zip.ZipException: duplicate entry的错误,说明jar包有文件冲突了,通常是因为类重名,没有影响的话可以删除该类,但是建议的做法是在项目的Structure的Dependence中,点击右边的Scope,将该jar包的依赖方式由Compile变成Provided,表示该jar包不全局共享,这样外部编译的时候就不会找它了。

要回复问题请先登录注册