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

问题描述 投票:0回答:1

我创建了一个工具栏,并在该工具栏上创建了一个“三点菜单”。在我的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>

这里是应该显示三点菜单的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();
}
java android menu toolbar
1个回答
1
投票

[您必须覆盖要在其中显示菜单的每个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; 
}

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

© www.soinside.com 2019 - 2024. All rights reserved.