Почему onCreateMenuOptions не вызывает? (Firestore, MVVM, привязка данных) - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь, чтобы моя пользовательская панель инструментов отображала доступ к моему меню параметров. Кажется, все подключено правильно, но 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" />

Большое спасибо!

...