在没有startActivityForResult的情况下将数据发送到Activity

时间:2016-07-06 22:05:13

标签: android android-activity

如何将数据发送到另一个没有startActivityForResult的活动?

Override onActivityResult方法,以便在结果从另一个Activity返回时立即执行逻辑。具体来说,来自我的EditItemActivity

过程:

MainActivity内,

enter image description here

当我点击ListView中的某个项目时,我被重定向到另一个名为ToDoDetailActivity

的活动

enter image description here

当我点击Edit按钮时,我将重定向到另一个名为EditItemActivity"的活动

enter image description here

我做出更改并按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();
        }
    }

2 个答案:

答案 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方法中更新该结果