Nullpointerexception - 通过意图传递数据

时间:2017-01-31 20:03:03

标签: java android android-intent

我遇到了一个问题,我无法理清我所获得的NullPointerException(NPE)。

这是我的MainActivity代码

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        String bccode = result.getContents();

        if(result != null) {
            if(result.getContents() == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            } else {
                Intent sendBarCode= new Intent(MainActivity.this, showdata.class);
                sendBarCode.putExtra("barccode", bccode);
                startActivity(sendBarCode);
                startActivity(new Intent(MainActivity.this, showdata.class));
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);

        }
 }

我的班级收到它showdata.class:

public String barcode = getIntent().getStringExtra("barccode"); 

确切错误:

  

引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String android.content.Intent.getStringExtra(java.lang.String)'

这个特殊的NPE让我感到有些困惑,因为我遵循了我在网上找到的所有说明。

3 个答案:

答案 0 :(得分:2)

防止NPE

final Intent intent = getIntent();
if (intent != null) {
   ...
}
else {
    Log.d(TAG, "No intent");
}

答案 1 :(得分:2)

因此,您需要拨打startActivity两次,一次使用数据,一次使用新的Intent,但不会有任何数据。

答案 2 :(得分:1)

尝试在showdata课程中进行此操作。

public String barcode = null;
Intent i = getIntent();
barcode =i.getStringExtra("barccode");