我正在关注本教程http://www.vogella.com/articles/AndroidIntent/article.html通过使用 startActivityForResult 调用活动来将一些数据传输到父活动。
基本上我正在尝试完成父活动,单击某些按钮但不是 onBackPressed。我不知道是否有更简单的方法。像这样:
MainPage to NewTarget
NewTarget to Target
// onBackPressed
Target to NewTarget
// onButtonClick on TargetActivity
Target to MainPage
当我单击 NewTarget 活动上的按钮时,问题是 onActivityResult 调用,而不是目标活动完成?不应该是相反的吗?
在“NewTarget”类中,我有一个按钮需要调用一个活动 onClick。而且我还需要一些关于活动的反馈,名为“目标”,就像它已通过后退按钮或其他方式完成(我需要在某个点点击完成该活动,我称之为“完成()”)
来自 NewTarget 活动:
public void savingClick(View v) {
Intent targetIntent = new Intent(this, Target.class);
targetIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(targetIntent, 5);
}
关于目标活动:
@Override
public void finish() {
if(ClickCheck) {
Log.d("Target","ClickCheck");
// Prepare data intent
Intent data = new Intent();
data.putExtra("returnKey", "click");
// Activity finished ok, return the data
setResult(RESULT_OK, data);
}
super.finish();
}
最后是 NewTarget 活动:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("NewTarget","requestCode: " + requestCode);
Log.d("NewTarget","resultCode: " + resultCode);
if(requestCode == 5 && resultCode == RESULT_OK) {
Log.d("NewTarget","data: " + data.hasExtra("returnKey"));
if(data.hasExtra("returnKey"))
this.finish();
}
super.onActivityResult(requestCode, resultCode, data);
}
我检查了这些值:
// these lines have appeared when i clicked on button to startActivityForResult
requestCode: 5
resultCode: 5
// ClickCheck line has appeared on Target activity finished.
// data: data.hasExtra("returnKey")); line has never been appeared.
那么有什么关系呢?我在俯瞰什么?提前感谢您的帮助。