Android 按下时,片段不是从菜单项开始

Android 按下时,片段不是从菜单项开始,android,android-fragments,android-fragment-manager,Android,Android Fragments,Android Fragment Manager,我试图从工具栏启动一个片段(工具栏也在片段中),但它没有启动,当它在主活动中时,情况并非如此,它工作正常 如果您想要任何文件的更多引用或想要查看其他文件 请告诉我我会上传的 Java文件 Home\u Fragment.java public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

我试图从工具栏启动一个片段(工具栏也在片段中),但它没有启动,当它在主活动中时,情况并非如此,它工作正常

如果您想要任何文件的更多引用或想要查看其他文件 请告诉我我会上传的

Java文件

Home\u Fragment.java

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);

    MaterialToolbar materialToolbar = view.findViewById(R.id.tool_bar);
            materialToolbar.setOnMenuItemClickListener(toolbarItemClickListener);
return view;
    }
    
    private final MaterialToolbar.OnMenuItemClickListener toolbarItemClickListener =
            (MenuItem item) -> {
                Fragment selectedFragment = null;
                if (item.getItemId() == R.id.search_button) {
                    selectedFragment = new Search_Fragment();
                }
               
                return true;
            };
XML文件

工具栏.xml(菜单xml)


tool_bar.xml

<com.google.android.material.appbar.MaterialToolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/tool_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@color/black"
    app:itemIconSize="29dp"
    app:layout_scrollFlags="scroll|enterAlways"
    app:menu="@menu/tool_bar">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/app"
        android:textColor="@color/white"
        android:textSize="23sp"
        android:textStyle="bold" />

</com.google.android.material.appbar.MaterialToolbar>

您刚刚创建了一个片段的新实例,但没有将其添加到FragmentManager,因此它没有启动。您必须进行FragmentTransaction才能启动片段

片段selectedFragment=null

if (item.getItemId() == R.id.search_button) {
    selectedFragment = new Search_Fragment();
    getParentFragmentManager.beginTransaction()
        .replace(R.id.fragment_container, Search_Fragment.class, null) // fragment_container is the ID of the fragment holder
        .setReorderingAllowed(true)
        .commit();
}

getParentFragmentManager给了我一个错误你能告诉我一个简单的方法吗,比如创建一个新的意图或者类似的东西,我还想添加一个backbackback如果你想在HomeFragment中放置搜索片段,那么就用getChildFragmentManager()而不是getParentFragmentManager()。要添加到backstack,请在.commit()之前使用.addToBackStack(null)
if (item.getItemId() == R.id.search_button) {
    selectedFragment = new Search_Fragment();
    getParentFragmentManager.beginTransaction()
        .replace(R.id.fragment_container, Search_Fragment.class, null) // fragment_container is the ID of the fragment holder
        .setReorderingAllowed(true)
        .commit();
}