10

通过单击父级的按钮,我开始了一个子级活动。我正在计算孩子活动中的一些结果(字符串类型)并完成孩子回到父母身边。有没有更好的方法可以使用意图或附加功能在 Parent 中获得该结果?(我可以通过在 Child 中将 result 变量设置为 public 和 static 来获得 Parent 的结果)请帮助我。我是android开发的新手。

startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);

我应该在 Parent 的 onActivityResult() 中写什么?

4

2 回答 2

29

代替startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);

您可以使用 putExtras() 方法在活动之间传递值:

在儿童活动中:

Intent data = new Intent();
data.putExtra("myData1", "Data 1 value");
data.putExtra("myData2", "Data 2 value");
// Activity finished ok, return the data
setResult(RESULT_OK, data);
finish();

在 Parent 活动中,您可以覆盖 onActivityResult() 并且在其中您可以拥有 Intent 参数,并且从该方法的 Intent 参数中您可以检索从子活动传递的额外值,例如 intent.getStringExtra 或 intent.getSerializableExtra。

例如:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        if (data.hasExtra("myData1")) {
            Toast.makeText(this, data.getExtras().getString("myData1"),
                Toast.LENGTH_SHORT).show();
        }
    }
}
于 2012-05-14T11:36:53.257 回答
4

在家长活动中

Intent intent = new Intent(getApplicationContext(), yourChildActivity.class);
intent.putExtra("key", "value");
startActivityForResult(intent, ACTIVITY_CONSTANT);

在子活动中通过发送回您的父活动的结果

Intent data = new Intent();
data.putExtra("key1", "value1");
data.putExtra("key2", "value2");
// Activity finished return ok, return the data
setResult(RESULT_OK, data);
finish();

并在您的父活动中获取子活动结果信息

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        if (data.hasExtra("key1") && data.hasExtra("key2")) {
            Toast.makeText(
                this,
                "Your reult is :  "data.getExtras().getString("key1") + " " + data.getExtras().getString("key2"),
                Toast.LENGTH_SHORT).show();
        }
    }
}
于 2016-10-05T11:26:12.647 回答