4

在活动之间传递数据时遇到问题。ListActivity 正在收集数据,当按下后退按钮时返回 MainActivity,然后想通过 onResume 方法获取该数据,但我什么也没得到。

如何解决这个问题?

ListActivity.java

    @Override
public void finish() {
    i = new Intent(ArrayListActivity.this, MainActivity.class);
    i.putParcelableArrayListExtra(Constants.TAG_SELECTED_PRODUCT_LIST, selected_list);
    super.finish();
}

MainActivity.java

    @Override
protected void onResume() {
    super.onResume();

    Bundle extras = getIntent().getExtras().getBundle(Constants.TAG_SELECTED_PRODUCT_LIST);
    if(extras != null) {
        selected_list = extras.getParcelableArrayList(Constants.TAG_SELECTED_PRODUCT_LIST);


        myListView.setAdapter(new ProductAdapter(MainActivity.this,
                    R.layout.array_lisviewt_item_row, selected_list));
    }
}
4

3 回答 3

4

您可能希望通过该startActivityForResult(...)方法从第一个活动开始您的第二个活动。

此方法允许您将已启动活动的结果传输回其正在启动的活动。

从文档中:

启动一项您希望在完成后获得结果的活动。当此活动退出时,您的onActivityResult()方法将使用给定的 requestCode 调用。使用否定的 requestCode 与调用 startActivity(Intent) 相同(该活动不作为子活动启动)。

于 2013-03-26T15:18:42.400 回答
2

您需要使用startActivityForResult()启动活动并覆盖onActivityResult()以处理从第二个活动返回的数据。

查看Android 开发者网站上的这篇文章以获取更多信息。

于 2013-03-26T15:24:04.320 回答
2

也许你应该

  • ListActivity用startActivityForResult ()从你的MainActivity.
  • 完成对 的处理后ListActivity,调用setResult()设置数据,然后调用finish()

这将使您回到以前的MainActivity. 那么如何检索您的数据集ListActivity

在开始活动和获取结果中有对这种机制的简要说明。

于 2013-03-26T15:41:22.293 回答