无法将reult意图发送到第二个活动

时间:2016-02-09 06:42:52

标签: android android-intent

无法将reult意图发送给第二个活动

注意:我正在使用此库https://github.com/jdamcd/android-crop

  

如果我删除这三行

,这段代码可以正常工作
Intent i=new Intent(MainActivity.this,Edit.class);
 i.putExtra("imageUri", uri.toString()); 
startActivity(i);

以下是我想传递给第二个活动的结果意图

 private void handleCrop(int resultCode, Intent result) { 
    hideProgress();
 if (resultCode == RESULT_OK){
    resultView.setImageURI(Crop.getOutput(result));
    uri=result.getData(); 
   //result.setData(null);
   Intent i=new Intent(MainActivity.this,Edit.class);
   i.putExtra("imageUri", uri.toString()); 
   startActivity(i);
 }

错误:引起:com.soundcloud.android.crop.example.MainActivity.handleCrop(MainActivity.java:188)中的java.lang.NullPointerException 第188行是:i.putExtra(" imageUri",uri.toString());

2 个答案:

答案 0 :(得分:0)

检查uri.toString()是否为空

if(uri.toString() != null && !uri.toString().isEmpty())
 i.putExtra("imageUri", uri.toString()); 

在通过Intent传递数据之前。

答案 1 :(得分:0)

检查uri是否为空,如下所示:

if(uri != null)
    i.putExtra("imageUri", uri.toString()); 

修改

  

怎么可能是null?

它为null,因为getData()实际上是null。

  

resultview可以顺利保存到imageview

好的回答是,您可以查看Crop.getOutput(result) here的源代码。来自源代码:

public static Uri getOutput(Intent result) {
        return result.getParcelableExtra(MediaStore.EXTRA_OUTPUT);
    }

因此Crop.getOutput(result)无法从Uri获取getData()。它使用getParcelableExtra()获取它。所以,将代码更改为:

private void handleCrop(int resultCode, Intent result) { 
    hideProgress();
 if (resultCode == RESULT_OK){
    resultView.setImageURI(Crop.getOutput(result));
    uri=result.getParcelableExtra(MediaStore.EXTRA_OUTPUT);
   //result.setData(null);
   Intent i=new Intent(MainActivity.this,Edit.class);
   i.putExtra("imageUri", uri.toString()); 
   startActivity(i);
 }