我有活动A with listView,用户单击任何启动活动B的项目。根据用户在活动B中所做的操作,B可能会更改活动A上的listView。Android:当活动返回到前一活动时检测
所以我的问题:
我怎么能告诉活性的,它是从何时活动B中的用户返回到它恢复?
我希望能够在activity A返回时发出listView的刷新信号。
谢谢!
我有活动A with listView,用户单击任何启动活动B的项目。根据用户在活动B中所做的操作,B可能会更改活动A上的listView。Android:当活动返回到前一活动时检测
所以我的问题:
我怎么能告诉活性的,它是从何时活动B中的用户返回到它恢复?
我希望能够在activity A返回时发出listView的刷新信号。
谢谢!
您可以添加代码以刷新列表视图在活动A的onResume()
@Override
protected void onResume() {
super.onResume();
//Code to refresh listview
}
使用startActivityForResult启动B活动。并检查活动B的活动A onActivityResult()方法中的数据。使用notifyDataSetChanged为listView更新内容。
使用startActivityForResult
是最优雅的方式来做到这一点。 OnResume
会在每次关闭并打开应用程序时发生,这会使用更多的资源,尤其是在刷新大量数据的情况下。
声明请求代码为常数,在您的活动的顶部:
public static final int OPEN_NEW_ACTIVITY = 123456;
将这个你开始新的活动:
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
做一些活动时结束。文档建议您使用resultCode
,但根据具体情况,按下按钮时,结果可以是RESULT_OK
或RESULT_CANCELED
。所以我会放弃它。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OPEN_NEW_ACTIVITY) {
// Refresh your ListView here
// ....
}
}
由于某种原因,我在将它放入碎片时遇到了麻烦。所以你必须把它放在活动中。
我有另一种方式来做到这一点,这可能会在某些情况下,来方便 - 我把私人捆绑变量,我们称之为state
,当我开始一个活动,我把一个字符串,说我开始哪项活动:
state.putString("startedActivity", "A");
Intent intent = new Intent(this, ActivityA.class);
startActivity(intent);
我存储状态束坚持不懈设备改变(旋转等):
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putAll(state);
}
在onCreate
我加载状态:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
savedInstanceState = new Bundle();
}
state = savedInstanceState;
}
然后在onResume
方法中,我可以检查,我是否只是在某个活动。请注意,我立即从状态中删除字符串,因此它不会在轮换等情况下再次显示。
public void onResume() {
super.onResume();
if (state.getString(STARTED_ACTIVITY, null) != null) {
// we just came from another activity!
state.putString(STARTED_ACTIVITY, null); // clear the state
// do whatever you need
}
}
嗯,我这样做,它的工作,但实际上@ Muz的答案是一样的,更简单,所以如果你需要知道,使用他的,你是否真的从孩子的活动回来。 – 2016-05-22 00:15:48
这很像一个魅力。谢谢 – 2012-08-14 05:49:08
请注意,这也被称为其他场合,如活动开始,设备轮换等,而不仅仅是从活动B返回。 – 2016-05-22 00:17:29