如何通过按后退按钮
停止从当前片段重新加载先前的片段例如 好像我们正从背面的列表片段移动到详细信息片段一样,无需使用Android Jet Pack和导航架构再次重新加载列表片段
<fragment
android:id="@+id/my_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation_graph" />
答案 0 :(得分:2)
导航组件目前仅支持片段替换。因此,您将无法像手动片段事务那样添加()片段。
但是,如果您担心要重新扩大布局并重新获取片段的数据,则可以通过以下两种方法轻松解决。
private var view: View? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
if (view == null) {
view = inflater.inflate(R.layout.fragment_list, container, false)
//...
}
return view
}
来源:https://twitter.com/ianhlake/status/1103522856535638016
答案 1 :(得分:0)
您需要这些方法
getFragmentManager()。popBackStackImmediate();
getFragmentManager()。popBackStack()
看看下面的链接,还有更多可供选择。祝你有美好的一天。
您要求我提供更多帮助。我正在更新答案
做这样的事情
@Override
public void onBackPressed(){
FragmentManager fm = getFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("MainActivity", "popping backstack");
fm.popBackStack();
} else {
Log.i("MainActivity", "nothing on backstack, calling super");
super.onBackPressed();
}
}