Android工具栏菜单未在所有活动中显示

泰勒·M:

我创建了一个工具栏和一个在工具栏上的“ 3点菜单”。在我的HomeActivity中,显示菜单。但是,在其他活动中,菜单没有(但工具栏有)。我不确定这里发生了什么。

这是toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/colorPrimary"
    android:elevation="4dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

    app:popupTheme="@style/Theme.AppCompat.Light">

</androidx.appcompat.widget.Toolbar>

这是应该显示3点菜单的settings_menu.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/item2"
        android:title="Item 2"
        app:showAsAction="never" />

    <item android:id="@+id/item3"
        android:title="Item 3"
        app:showAsAction="never">

        <menu>

            <item android:id="@+id/subitem1"
                android:title="Sub Item 1"/>

            <item android:id="@+id/subitem2"
                android:title="Sub Item 2"/>

        </menu>

    </item>

</menu>

这是HomeActivity的onCreate()方法,该菜单确实出现。

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// deactivate the fullscreen mode used by the splash screen
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

setContentView(R.layout.activity_home);

toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

tvClients = findViewById(R.id.tvClients);
tvClientList = findViewById(R.id.tvClientList);
tvClientName = findViewById(R.id.tvClientName);

buttonSettings = findViewById(R.id.buttonSettings);
buttonLogout = findViewById(R.id.buttonLogout);
buttonCreateNewClient = findViewById(R.id.buttonCreateNewClient);

// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();

这是另一个活动的onCreate()方法,可通过在HomeActivity中单击按钮来访问,其中菜单按钮不会出现。

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_new_client);

toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("Create New Client");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

etClientFirstName = findViewById(R.id.etClientFirstName);
etClientLastName = findViewById(R.id.etClientLastName);
etClientAge = findViewById(R.id.etClientAge);

buttonCreateClient = findViewById(R.id.buttonCreateClient);
buttonCreateClient.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        createClient();
    }
});

// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
}
穆罕默德·阿拉(Mohammed Alaa):

您必须覆盖要显示的onCreateOptionsMenu每个activity菜单中的

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.settings_menu, menu);
    // return true so that the menu pop up is opened
    return true; 
}

检查此线程以获取完整详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章