我在布局中有一个带有片段容器的Activity
。它可以显示3种不同的Fragment
。这些片段包含一个Listview
,它使用我制作的自定义适配器显示数据。
因此,每个列表元素都是在onCreateView
期间创建的,也就是在我查询数据库以获得数据之后。
但有时我的数据库中的一些数据可能会发生变化,所以我想在Listview
中重新绘制/重新创建它。
发布于 2015-09-03 01:42:59
将其分离并附加
Fragment currentFragment = getFragmentManager().findFragmentByTag("YourFragmentTag");
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.detach(currentFragment);
fragmentTransaction.attach(currentFragment);
fragmentTransaction.commit();
或使用搜索片段
Fragment currentFragment = getActivity().getSupportFragmentManager().findFragmentById(R.id.container);
发布于 2018-02-28 14:40:20
有一种非常有用的Fragment
方法,可用于刷新片段。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//Write down your refresh code here, it will call every time user come to this fragment.
//If you are using listview with custom adapter, just call notifyDataSetChanged().
}
}
发布于 2018-06-10 01:32:29
组合了两个答案并删除了if (isVisibleToUser)
,因为它使setUserVisibleHint
以不可预测的异步顺序调用,片段既可以刷新,也可以不刷新。我发现这段代码(在你的片段中)是稳定的:
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// Refresh tab data:
if (getFragmentManager() != null) {
getFragmentManager()
.beginTransaction()
.detach(this)
.attach(this)
.commit();
}
}
https://stackoverflow.com/questions/32359727
复制相似问题