Я пытаюсь, чтобы моя пользовательская панель инструментов отображала доступ к моему меню параметров. Кажется, все подключено правильно, но onCreateOptionsMenu не будет вызывать из моего фрагмента.
Примечание. Я использовал тему NoActionBar в AndroidManifest, но в предварительном просмотре xml моего меню отображаются параметры, отображаемые на старом Панель действий вместо моей панели инструментов - это проблема как-то связано с этим? Возможно, он все еще думает, что оригинальная панель действий используется? (Я был бы рад использовать его, если это проще всего - я выбрал только пользовательскую панель инструментов, потому что это то, что мне сказали, было лучше, но кажется немного лучше просто отобразить две опции меню ...).
Включен код первого фрагмента, но он отказывается вызывать любой фрагмент.
Манифест:
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
tools:replace="android:appComponentFactory"
android:appComponentFactory="androidx.appcompat.app.ActionBar"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true">
Фрагмент:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
...
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "Optionsmenu");
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu, menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.bAddNewClient:
SingleFragmentActivity.fm.beginTransaction().replace(R.id.fragment_container,
new RegisterFragment()).addToBackStack(null).commit();
return true;
case R.id.bInbox:
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
startActivity(sendIntent);
return true;
case R.id.bLogout:
auth.signOut();
SingleFragmentActivity.fm.beginTransaction().replace(R.id.fragment_container,
new LoginFragment()).addToBackStack(null).commit();
// TODO: fix back button
Toast.makeText(getActivity(), "Logged out", Toast.LENGTH_SHORT).show();
return true;
} return true;
}
Панель инструментов XML :
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:id="@+id/toolbar"
app:theme="@style/ThemeOverlay.AppCompat.Dark"
android:background="#575757"
android:elevation="4dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GSC Training and Nutrition Tracker"
android:textSize="20dp"
android:textStyle="bold"
android:textColor="@color/white"
android:background="#575757"
android:layout_gravity="center"
android:id="@+id/toolbar_title" />
</androidx.appcompat.widget.Toolbar>
Фрагмент XML:
androidx.coordinatorlayout.widget.CoordinatorLayout
...
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
Большое спасибо!