我有两项活动:user@host:~/$ h5ls ./my_data.h5
label_train Dataset {200, 1, 1, 1}
new_train_x Dataset {200, 6000, 1, 1}
。
我使用ActivityA and ActivityB
启动ActivityB
:
startActivityForResult
我将此代码从Intent lIntent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(lIntent, 1);
返回到ActivityB
(ActivityB可以多次调用自己):
ActivityA
该代码在没有Intent intent = new Intent(ActivityB.this,ActivityA.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("files",
mChecked.toArray(new String[mChecked.size()]));
startActivity(intent);
//setResult(Activity.RESULT_OK, intent);
的情况下运行良好。我的问题是我必须设置setResult
才能正确处理RESULT_OK
中的结果:
ActivityA
如果我在ActivityB中的@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1){
if (resultCode == Activity.RESULT_OK){ <-- always 0 and not -1
System.out.println("OK");
}
}
}
中发表评论,则永远不会调用onActivityResult。
如果我使用setResult
,则会调用startActivity
,但未设置onActivityResult
。
如何在我的情况下设置结果代码?
更新
resultCode
调用代码Intent intent = new Intent(FileChooserActivity.this,FtpContentListView.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("files", mChecked.toArray(new String[mChecked.size()]));
setResult(Activity.RESULT_OK, intent);
startActivity(intent);
,但onActivityResult
为0而不是-1(RESULT_OK)。
非常感谢你的帮助
的Stefan
答案 0 :(得分:0)
我相信你所追求的是首先为结果启动活动B(就像你现在一样),然后使用Intent.FLAG_ACTIVITY_FORWARD_RESULT
启动活动B的新实例。但请注意,每当您创建新的实例B时,您都需要完成以前的活动B实例(如本gist https://gist.github.com/mcelotti/cc1fc8b8bc1224c2f145中所述)。
或者,您可以简单地为结果启动活动B的所有实例,并将结果传递下来,直到达到活动A:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
setResult(resultCode);
finish();
}
答案 1 :(得分:0)
您需要在Activity-B中进行更改:
LocatableUser
希望这有效。