我在一项活动中有5个片段。他们正在使用tabs / viewpager进行展示。假设他们的名字是ONE,TWO,THREE,FOUR和FIVE。我将所有片段中的数据显示为ListView。我正在从数据库游标中扩展ListView中的数据。当我在同一个片段中执行添加或删除时,数据会正常更新。当我将数据从一个片段发送/移动到另一个片段时,会出现问题。
问题的例子: 我将数据从片段ONE发送/移动到片段TWO。然后我点击片段TWO来查看数据。它不在那里。当我点击片段FOUR或片段FIVE然后返回片段ONE时显示数据。或者,如果应用程序重新启动或任何其他活动出现在前面并返回。
单击相邻选项卡或交换到相邻选项卡不会显示数据。然后返回到移动数据的选项卡
我相信你们中的某个人必须知道这里发生了什么,并告诉我如何解决这个问题。
onCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_dramas, container, false);
setHasOptionsMenu(true);
list = (ListView) view.findViewById(R.id.mylist);
return view;
}
的onResume
@Override
public void onResume() {
super.onResume();
getListView();
}
onViewCreated
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
add();
}
});
}
片段中还有其他方法,但它们与问题无关。我认为这三种方法是相关的。我在片段中没有onCreate()方法..
答案 0 :(得分:1)
如果片段已经在内存中,则无论何时添加/删除/更新任何数据,都应使用BroadcastReceiver
通知其他片段。
您也可以尝试EventBus
。
https://github.com/greenrobot/EventBus