Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装响应NullPointerException_Android_Retrofit - Fatal编程技术网

Android 改装响应NullPointerException

Android 改装响应NullPointerException,android,retrofit,Android,Retrofit,在我的应用程序中,我一直在对我的Web服务调用进行改进。它工作不好。这是应用程序启动时导致的错误 04-16 07:41:26.162 5860-5860/com.pance.taugaksih E/AndroidRuntime:致命异常:main java.lang.NullPointerException 位于com.pance.taugaksih.activity.SplashscreenActivity$1.success(SplashscreenActivity.java:54) 位于

在我的应用程序中,我一直在对我的Web服务调用进行改进。它工作不好。这是应用程序启动时导致的错误

04-16 07:41:26.162 5860-5860/com.pance.taugaksih E/AndroidRuntime:致命异常:main java.lang.NullPointerException 位于com.pance.taugaksih.activity.SplashscreenActivity$1.success(SplashscreenActivity.java:54) 位于com.pance.taugaksih.activity.SplashscreenActivity$1.success(SplashscreenActivity.java:42) CallbackRunnable$1.run(CallbackRunnable.java:45) 位于android.os.Handler.handleCallback(Handler.java:725) 位于android.os.Handler.dispatchMessage(Handler.java:92) 位于android.os.Looper.loop(Looper.java:137) 位于android.app.ActivityThread.main(ActivityThread.java:5041) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:511) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)上 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 在dalvik.system.NativeStart.main(本机方法)

这是我调用带有响应NullpointerExeption的改装的代码

 RESTClient.get().getPost(new Callback<ResponsePost>() {
        @Override
        public void failure(RetrofitError error) {
            // TODO Auto-generated method stub
            progress.dismiss();
            Toast.makeText(getApplicationContext(), "AKSES KE SERVER GAGAL" + error.getMessage(), Toast.LENGTH_LONG).show();
            finish();
        }

        @Override
        public void success(ResponsePost post, Response response) {
            // TODO Auto-generated method stub
            if (post.getPost().size() > 0) {
                PostController chb = new PostController(myContext);
                chb.open();
                chb.deleteData();
                for (int y = 0; y < post.getPost().size(); y++) {
                    PostModel tmpHasil = post.getPost().get(y);
                    chb.insertPost(tmpHasil);
                }
                chb.close();

                Intent sendIntent = new Intent(myContext,PostActivity.class);
                startActivity(sendIntent);
                finish();
            } else {
                Toast.makeText(getApplicationContext(), "DATA SEDANG TIDAK TERSEDIA", Toast.LENGTH_LONG).show();
            }
            progress.dismiss();
        }
    });

}

我认为您正在循环中运行代码,请更新完整代码。

试试

改变

 if (post.getPost().size() > 0) {


您在
SplashscreenActivity.java的
45
54
行中有什么内容?这不是改装问题!这是SplashscreenActivity.java的第45行和第54行中的代码。这是第45行:RESTClient.get().getPost(新回调(){这是第54行如果(post.getPost().size()>0){检查post.getPost()是否为null。比如如果(post.getPost()!=null&&post.getPost().size()>0)在循环中是什么意思?导致错误的代码:if(post.getPost().size()>0)。返回NullPointerExeptionies,不再出错,但它将转到else语句。我有一个数据要获取,但使用我的代码我仍然得到了返回NullpointerExeption。请尝试Log post.getPost().size。结果如何?如我前面所说,如果我尝试访问post.getPost().size())。它将返回NullPointerExeption您可以发布类响应post.classI更新我的答案。试试!!
 if (post.getPost().size() > 0) {
PostController chb = new PostController(myContext);
            chb.open();
            chb.deleteData();
if(post != null && !post.getPost().isEmpty()){
 for(ResponsePost data: post.getPost()){
 PostModel tmpHasil = data.getName(); // or getYourNameModel()
                chb.insertPost(tmpHasil);
 // enter code here
}
}
chb.close();

Intent sendIntent = new Intent(myContext,PostActivity.class);
startActivity(sendIntent);
finish();