如何将数据发送到另一个没有startActivityForResult
的活动?
我Override
onActivityResult
方法,以便在结果从另一个Activity返回时立即执行逻辑。具体来说,来自我的EditItemActivity
过程:
在MainActivity
内,
当我点击ListView
中的某个项目时,我被重定向到另一个名为ToDoDetailActivity
当我点击Edit
按钮时,我将重定向到另一个名为EditItemActivity"
的活动
我做出更改并按Edit
上的EditItemActivity
按钮后,我会返回MainActivity
data = new Intent(EditItemActivity.this, MainActivity.class);
data.putExtra(EDITTEXT_VALUE, etValue);
setResult(123, data);
startActivity(data);
在我的MainActivity中,我想在我的onActivityResult
方法中使用此逻辑更新我刚刚编辑的项目。但是,我没有看到LogCat
中的任何日志,这意味着我不相信此方法正在使用,因此没有执行逻辑
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data == null) {
return;
}
if (resultCode == 123) {
String editedItemValue = data.getStringExtra(EditItemActivity.EDITTEXT_VALUE);
todoItems.remove(editedPosition);
aToDoAdapter.insert(editedItemValue, editedPosition);
aToDoAdapter.notifyDataSetChanged();
}
}
答案 0 :(得分:1)
在您的代码中:
//...
myProcess.WaitForExit();
int ec = myProcess.ExitCode;
if(ec != 0) {
//oops the Python program made an error
} else {
//assume everything went fine
}
当您使用MainActivity.class执行startActivity时,它将启动一个新的Activity,因此您不会在“onActivityResult”方法中找到结果。这是因为在完成“孩子”活动后你没有回到主要活动。
我过去所做的是使用广播事件来通知“MainActivity”更新视图。
希望有所帮助。
答案 1 :(得分:1)
我们可以使用BroadcastReceiver
或使用数据库在EditItemActivity
中存储您的修改结果,然后在MainActivity
的onResume方法中更新该结果