我有一个在片段之间转换的Activity。片段1到片段2。片段1有一个listview。当用户转到片段2时,用户可以选择对填充listview的数据进行更改。当用户按下后退按钮时,它会将他们带回到第一个片段。当用户返回时,必须更新listview以显示片段2中所做的更改。我该怎么做呢?
Frag2 pfrag = new Frag2();
pfrag.setArguments(bundle);
ft=fm.beginTransaction();
ft.add(R.id.fragment_swap, pfrag,"Profile");
ft.show(pfrag);
ft.addToBackStack("pfrag");
ft.commit();
你可以在ListView的适配器上调用notifyDataSetChanged();
。
查看更多信息
你可以使用罗宾斯的答案,或者如果你想将片段2中的数据传递给片段1,你可以调用片段1类中的方法:
YourFragmentClass.refreshList( your data)
和片段2中的方法:
//使用你的数据设置适配器
}
在您的片段中,包含如下代码:
(isPaused)布尔变量用于跟踪当前片段在导航到下一个活动时被暂停。
当恢复回调webservice(或)调用方法刷新列表通过调用notifydatasetchanged()从适配器
@Override
public void onResume() {
super.onResume();
if(isPaused) {
isPaused=true;
fetchDirectories();
// call the adapter method to notify the data set.
}
}
@Override
public void onPause() {
super.onPause();
isPaused=true;
}
private boolean isPaused=false;
我认为实现这一点的最好方法是在片段的onResume()-方法中加载列表。因此,代码看起来像这样:
@Override
public void onResume() {
super.onResume();
initializeList();
}
...
private void initializeList() {
adapter = new MessageTemplateAdapter(getActivity(), datasource.getTemplateList());
setListAdapter(adapter);
}