Android 无法将reult意图发送到第二个目标
未能将reult意向发送给第二个ativityAndroid 无法将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
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。非常感谢您的时间贡献