Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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
Java 三星Galaxy S5安卓5上的Toast cause NPE_Java_Android_Samsung Mobile_Android Developer Api - Fatal编程技术网

Java 三星Galaxy S5安卓5上的Toast cause NPE

Java 三星Galaxy S5安卓5上的Toast cause NPE,java,android,samsung-mobile,android-developer-api,Java,Android,Samsung Mobile,Android Developer Api,以下是启动屏幕的代码(这不是我的愿望,而是客户机)-这是我唯一做的事情-只是用将数据加载到此活动来替换sone代码: public class SplashActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Retrofit retrofit = new Re

以下是启动屏幕的代码(这不是我的愿望,而是客户机)-这是我唯一做的事情-只是用将数据加载到此活动来替换sone代码:

public class SplashActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constants.API_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    GetAll getAllProducts = retrofit.create(GetAll.class);
    Call<ArrayList<Products>> call = getAllProducts.getAll(Constants.PARTNER_ID,
            WaterFragment.getMD5Hash(Constants.PARTNER_ID + Constants.API_KEY));
    call.enqueue(new Callback<ArrayList<Products>>() {
        @Override
        public void onResponse(Response<ArrayList<Products>> response, Retrofit retrofit) {
            if (response.body() != null) {
                ActiveAndroid.beginTransaction();
                try {
                    ProductsDMC product;
                    for (Products p : response.body()) {
                        if (new Select().from(ProductsDMC.class).where("product_id = ?", p.id).executeSingle() != null) {
                            product = new Select().from(ProductsDMC.class).where("product_id = ?", p.id).executeSingle();
                            product.price = p.price;
                        } else {
                            product = new ProductsDMC(p.id, p.article, p.title, p.price, p.amount, p.category_id,
                                    p.brand_id, p.description, p.photo[0], p.option != null ? p.option.bottle_price : "0");
                        }
                        product.save();
                    }
                    ActiveAndroid.setTransactionSuccessful();
                } finally {
                    ActiveAndroid.endTransaction();
                }
            }else{
                Toast.makeText(SplashActivity.this, "Try later!", Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        public void onFailure (Throwable t){
            Toast.makeText(SplashActivity.this, "Check your connection!", Toast.LENGTH_SHORT).show();
            Log.d("LoloPolo", t.getMessage().toString());
        }
    });
    Intent intent = new Intent(this, ListOrdersActivity.class);
    startActivity(intent);
    finish();
}
}
关于这个:

Toast.makeText(SplashActivity.this, "Try later!", Toast.LENGTH_SHORT).show();
我真的不明白-Toast.makeText().show怎么会导致NPE)

你能帮我吗

编辑

这看起来很奇怪,但crashlytics向我显示了错误代码字符串的错误位置。
这不是关于toast,而是调试loggin,从异常获取消息。

NPE是由于
Log.d(“loloplolo”,t.getMessage().toString())引起的,这是一个很严重的问题。并非总是
getMessage()
返回有效的对象。打印
t
就足够了。例如

Log.d("LoloPolo", "Error",  t);
(看一看)


这些回调也不会在
UI线程上运行。我不会用它们来表示祝酒词。

NPE是由于
Log.d(“LoloPolo”,t.getMessage().toString())引起的,这是一个很严重的问题。并非总是
getMessage()
返回有效的对象。打印
t
就足够了。例如

Log.d("LoloPolo", "Error",  t);
(看一看)


这些回调也不会在
UI线程上运行。我不会用它们来表示祝酒词。

问题是
t.getMessage().toString()

您在
onFailure(Throwable t)
部分获得NPE。对于测试用例,添加
“”+


问题是
t.getMessage().toString()

您在
onFailure(Throwable t)
部分获得NPE。对于测试用例,添加
“”+

 @Override
    public void onFailure (Throwable t){
        Toast.makeText(SplashActivity.this, "Check your connection!", Toast.LENGTH_SHORT).show();
         Log.d("LoloPolo",""+ t.getMessage().toString());
    }