Фрагмент не запускается из пункта меню при нажатии [Android]
Я пытаюсь запустить фрагмент с панели инструментов (панель инструментов тоже находится во фрагменте), но он не запускается, это не тот случай, когда он был в основном действии, он работал нормально.
Если вам нужны дополнительные ссылки на какой-либо файл или вы хотите увидеть другие файлы, пожалуйста, скажите мне, что я загружу его
Файлы Java
Home_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>
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>
1 ответ
Решение
Вы только что создали новый экземпляр своего фрагмента, но не добавили его в 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();
}