将数据发送到在后台运行的活动

时间:2013-03-26 15:15:53

标签: android android-activity

在活动之间传递数据时遇到问题。 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));
    }
}

3 个答案:

答案 0 :(得分:4)

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

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

来自文档:

  

在完成后启动您想要结果的活动。   当此活动退出时,您的onActivityResult()方法将会是   使用给定的requestCode调用。使用否定requestCode是   与调用startActivity(Intent)相同(活动未启动为   一项子活动)。

答案 1 :(得分:2)

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

在Android开发者网站上查看此article以获取更多信息。

答案 2 :(得分:2)

也许你应该

这会将您带回到之前的MainActivity。那么如何检索ListActivity的数据集?

Starting Activities and Getting Results中对此机制进行了简要说明。