Android 无法将reult意图发送到第二个目标

Android 无法将reult意图发送到第二个目标,android,android-intent,Android,Android Intent,未能将reult意向发送给第二个ativity private void handleCrop(int resultCode, Intent result) { hideProgress(); if (resultCode == RESULT_OK){ resultView.setImageURI(Crop.getOutput(result)); uri=result.getData(); //result.setData(null); Intent

未能将reult意向发送给第二个ativity

 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);
 }
注意:我正在使用这个库

如果我删除了这三行代码,这段代码将正常工作

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

 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())

检查
uri.toString(
)是否类似于null

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

在通过
Intent
传递数据之前,请检查
uri
是否为空,如下所示:

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

怎么可能是空的

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

结果视图被平滑地保存到imageview

为了回答这个问题,您可以查看
Crop.getOutput(result)
的源代码。从源代码:

public static Uri getOutput(Intent result) {
        return result.getParcelableExtra(MediaStore.EXTRA_OUTPUT);
    }
因此
Crop.getOutput(result)
不会从
getData()
获取
Uri
。它使用
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);
 }

可能是
uri.toString()=null
检查以下内容:uri=result.getData();return null按照@md的说法,在将其作为额外值传递之前,请执行null检查。它可能是空的。看起来您的
Uri
null
,请确认。我的操作与您所说的相同,但如果(Uri.toString()!=null&&!Uri.toString().isEmpty())发生相同的错误**错误:空指针异常**由:com.soundcloud.android.crop.example.MainActivity.handleCrop(MainActivity.java:193)处的java.lang.NullPointerException引起。第193行是:if(uri.toString()!=null&!uri.toString().isEmpty())@altu查看我的答案,您需要检查
uri
是否为空。因为如果
uri
为null,并且您对其调用
toString()
,它将抛出
NullPointerException
。是的uri为null..但是它怎么可能为null。。。。你可以在上面看到(有问题的代码)代码resultview被顺利地保存到imageview。。。。我只是想把同样的结果发送给第二个活动…我做了和你说的一样的事情,但是编辑类得到了空Uri。。。。编辑类代码Uri=getIntent().getParcelableExtra(“imageUri”);在编辑类中,您必须使用此行
getIntent().getStringExtra(“imageUri”)
获取imageUri。非常感谢您的时间贡献