簡體   English   中英

按下時片段未從菜單項開始

[英]Fragment is not starting from menu item when pressed

我正在嘗試從工具欄啟動一個片段(工具欄也在一個片段中)但它沒有啟動,當它在主要活動中它工作正常時不是這種情況。

如果您想要任何文件的更多參考或想查看其他文件,請告訴我我會上傳

Java 文件

首頁_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 文件

tool_bar.xml(菜單 XML)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search_button"
        android:icon="@drawable/ic_baseline_search_24"
        android:title=""
        app:showAsAction="always"
        android:iconTint="@color/white"/>

</menu>

工具欄.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>

您剛剛創建了 Fragment 的一個新實例,但沒有將它添加到 FragmentManager,因此它沒有啟動。 你必須創建一個 FragmentTransaction 來啟動片段。

片段選擇片段 = 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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM