gpt4 book ai didi

android - 抽屉导航 - 默认显示主页 fragment

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:08 24 4
gpt4 key购买 nike

我已将抽屉导航附加到应用程序的主要 Activity。抽屉导航有 4 个选项,可将用户导航到 4 个不同的 fragment f1、f2、f3 和 f4。

我创建了一个主页 Fragment fh。我没有在 Navigation Drawer 中添加 fh 作为选项。

fragment fh 填充进行 http 调用的数据。

每当用户选择 f1、f2、f3 或 f4 时;需要显示相应的 fragment 。

到目前为止一切正常。

但是,无论何时用户按下后退按钮,都应该显示 fh。 IE。 content_frame 应包含 fh。我无法完成这部分。

现在,每当用户按下后退按钮时,默认 View 都是空白的。

此外,由于 fh 调用 http 来填充数据,因此需要显示添加到堆栈的 fh。

这是我的实现:

MainActivity-OnCreate

mDrawerLayout.closeDrawer(mDrawerList);
setUpHomeFragment();

这是我管理 fragment 的方式,点击抽屉导航项目...

private void showFrg(Fragment fragment){

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.content_frame, fragment).commit();
}

setUpHomeFragment 函数,仅在 Activity oncreate() 上调用一次

private void setUpHomeFragment(){
mLandingPageFragment=new ReadyMyOrderCollections();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.content_frame, mLandingPageFragment);
ft.addToBackStack(null);
ft.commit();
}

MainActivity XML 布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<include layout="@layout/toolbar" />

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<include
android:layout_width="@dimen/drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
layout="@layout/list_view" />
</android.support.v4.widget.DrawerLayout>

</LinearLayout>

最佳答案

我在这里找到了解决这个问题的最干净的方法:

https://stackoverflow.com/a/21093352/1348550

仅在 Activity onCreate 上调用 setUpLandingFragment 一次。

private void setUpLandingFragment(){
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack();
fragmentManager.beginTransaction()
.add(R.id.content_frame, new LandingFragment()).commit();
}

在抽屉导航项目上点击:

private void changeFrag (Fragment f) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack();
fragmentManager.beginTransaction()
.add(R.id.content_frame, f).addToBackStack("fragBack").commit();
}

这个解决方案最酷的部分是,根本不需要 onBackPressed。

关于android - 抽屉导航 - 默认显示主页 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com