Android 在家庭活动中打开片段

Android 在家庭活动中打开片段,android,android-layout,listview,android-fragments,android-framelayout,Android,Android Layout,Listview,Android Fragments,Android Framelayout,我一直在搜索堆栈溢出,但似乎找不到有关我遇到的此问题的有用信息。。 下面我附上了我所拥有的家庭活动的代码,以及它的XML文件。我似乎无法理解问题是什么,我不知道我做错了什么。我想显示第三个类的内容(例如,我的每个片段都有一个不同的片段类,基本上我想能够在home活动中显示相同片段持有者中的所有片段。在这种情况下,我试图打开片段书签(men.Bookmarks) 各位有什么建议吗? 我没有包含片段的代码,因为那时会有很多类,但是如果需要,请告诉我:) DrawerLayout应该只有两个直接子级。

我一直在搜索堆栈溢出,但似乎找不到有关我遇到的此问题的有用信息。。 下面我附上了我所拥有的家庭活动的代码,以及它的XML文件。我似乎无法理解问题是什么,我不知道我做错了什么。我想显示第三个类的内容(例如,我的每个片段都有一个不同的片段类,基本上我想能够在home活动中显示相同片段持有者中的所有片段。在这种情况下,我试图打开片段书签(men.Bookmarks)

各位有什么建议吗?

我没有包含片段的代码,因为那时会有很多类,但是如果需要,请告诉我:)


DrawerLayout
应该只有两个直接子级。如果要替换同一活动中的不同片段,请在app\u bar\u主布局中创建框架布局。然后在活动中,执行此操作以替换片段

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.frame_layout_id,new yourFragment()).commit();

在同一个活动中添加不同片段所用的代码真是一团糟。您可以使用更好的方法。我在下面添加示例代码:

在活动的布局中,添加这行代码

<FrameLayout
        android:id="@+id/fragBookmarks"
        android:layout_weight="2"
        android:layout_width="25dp"
        android:layout_height="match_parent" />
此方法将帮助您在移动中向此活动添加任何片段。您不需要从一开始就添加所有片段。比如,如果现在我在HomeFragment上,我想从家里点击按钮打开BookmarkFragment,我会这样写

btnBookmark.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((HomeActivity) getActivity()).addFragment(new BookmarkFragment(), BookmarkFragment.class.getSimpleName()); // This will add the new fragment Bookmark fragment to the activity while adding it to backstack
        }
    });
现在,如果您想从BookmarkFragment返回HomeFragment,请在HomeActivity中添加此方法

public void popFragment() {
    if (getFragmentManager() == null)
        return;
    getFragmentManager().popBackStack();
}
并在书签片段中调用此函数

btnBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((HomeActivity) getActivity()).popFragment(); // This will remove the last added fragment Bookmark fragment
        }
    });

将不同片段添加到同一活动的方法非常有限,我们需要筛选的代码太多。请精简你的问题错误是什么?你想在同一个活动中添加不同的片段,对吗?嘿。。亚西尔:是的,主要观点是。。嗯,我对安卓系统完全陌生,我是一名学生,这是我必须为学校做的一项作业,所以所有这些都只是测试安卓系统的不同方面。。拉维我似乎找不到确切的错误,非常感谢你的快速回复。将立即尝试并很快返回报告:)由于其他问题,仍然缺少,但将返回。。显然,我甚至不能这样做,因为我的声誉很低?好吧,我可能有很多不必要的代码行,但我会尝试看看您的示例并报告:)
public void addFragment(Fragment frag, String tag) {
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.fragBookmarks, frag, tag);
    transaction.addToBackStack(getFragmentManager().getBackStackEntryCount() == 0 ? "FirstFragment" : null).commit();
    }
}
btnBookmark.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((HomeActivity) getActivity()).addFragment(new BookmarkFragment(), BookmarkFragment.class.getSimpleName()); // This will add the new fragment Bookmark fragment to the activity while adding it to backstack
        }
    });
public void popFragment() {
    if (getFragmentManager() == null)
        return;
    getFragmentManager().popBackStack();
}
btnBack.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ((HomeActivity) getActivity()).popFragment(); // This will remove the last added fragment Bookmark fragment
        }
    });