我使用了一个名为SwipeRefreshLayout的小部件,在有人推送视图时刷新我的片段。
要重新创建活动,我必须用途:
SwipeRefreshLayout mSwipeRefreshLayout;
public static LobbyFragment newInstance() {
return new LobbyFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_lobby, container, false);
receiver = new MySQLReceiver();
rlLoading = (RelativeLayout) view.findViewById(R.id.rlLoading);
gvLobby = (GridView) view.findViewById(R.id.gvLobby);
updateList();
mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.mSwipeRefreshLayout);
mSwipeRefreshLayout.setColorSchemeResources(R.color.pDarkGreen, R.color.pDarskSlowGreen, R.color.pLightGreen, R.color.pFullLightGreen);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
getActivity().recreate();
}
});
return view;
}
但是我不想重新创建包含视图分页器的完整Activity,我想重新创建片段。如何才能做到这一点?
9条答案
按热度按时间htrmnn0y1#
我使用
.detach()
和.attach()
来重新创建片段。连接
在先前已使用detach(Fragment)从UI取消锁定片段之后,重新附加片段。这会导致重新建立其视观表阶层、附加至UI并显示。
分离
从UI中分离给定片段。这与将其放在后台堆栈上时的状态相同:片段从UI中被移除,但是它的状态仍然由片段管理器主动管理。2当进入这个状态时,它的视图层次被破坏。
如何使用
7tofc5zh2#
您可以用途:
若要重新创建片段
注意:
getSupportFragmentManager()
是如果你使用支持片段和AppCompatActivity,如果你使用框架片段类你需要使用getFragmentManager()
xkrw2x1b3#
如果您使用的是导航组件,则可以使用:
这让NavController弹出当前片段,然后导航到它自己。你会得到一个新的片段,片段ViewModel也会被重新创建。
fcwjkofz4#
“献给Kotlin的情人"
如果要重新创建片段,则应先使用detach()片段,然后再使用attach()片段
请执行以下步骤
setp:1,首先在活动类上创建方法recreateFragment()
step:2,然后在您的片段上调用此方法以重新创建此片段
假设一个按钮点击然后重新创建这个片段
ar7v8xwq5#
如果要从活动刷新,请用途:
如果您已经处于片段中,则用途:
b5buobof6#
使用导航组件的用户!!:只是把自己的目的地。
第一个
mnowg1ta7#
使用Ciardini的方法有时会出错,但总是这样:
xbp102n08#
我不得不使用2个事务来重新加载片段的内容列表:
j7dteeu89#
在我的例子中,我有一个片段,当我点击一个按钮时,我需要重新创建这个片段,我在片段(MyFragmentClass)类的onCreateView中做了如下操作: