android工具栏上未显示菜单

android工具栏上未显示菜单,android,menu,Android,Menu,背景 我创建了一个Java类,即BaseActivity,它完成了实现菜单项和工具栏的所有基本工作。所有其他活动继承BaseActivity 问题 当我构建项目时,我可以看到工具栏,但没有菜单 代码 碱性 活动库 主要活动 但是,每次我介绍新活动时,我都必须包含它们。这一行setContentView(R.layout.Activity\u base)将被此行覆盖 setContentView(R.layout.activity\u main) 你无法通过你的方式实现你想要实现的目标。在做了几次

背景

我创建了一个Java类,即
BaseActivity
,它完成了实现菜单项和工具栏的所有基本工作。所有其他活动继承
BaseActivity

问题

当我构建项目时,我可以看到工具栏,但没有菜单

代码

碱性

活动库

主要活动


但是,每次我介绍新活动时,我都必须包含它们。

这一行
setContentView(R.layout.Activity\u base)将被此行覆盖
setContentView(R.layout.activity\u main)


你无法通过你的方式实现你想要实现的目标。

在做了几次挖掘之后,我找到了一个解决方案,它是:

基本活动

主要活动


您的输出是什么?正如我所说的,只有工具栏显示,没有菜单界面使用outputI编辑了问题,我不认为这是一个问题,因为
布局仍然可以工作。问题是您没有包括在基本活动中调用的布局,因为它已被覆盖。您的主要活动将包括一个空的
@layout/activity\u base
。我认为@aiqency是正确的。
BaseActivity
将基本布局充气,并将该工具栏设置为支持操作栏。然后,
main活动
膨胀其布局,再次膨胀基本布局(创建第二个
工具栏
),并将该视图设置为内容视图。因此,菜单设置在第一个工具栏上,但显示了第二个工具栏
BaseActivity
中,我仍然在工具栏上没有菜单,因为您必须在MainActivity类上设置菜单
public class BaseActivity extends AppCompatActivity {

   private Toolbar toolbar;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);

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

   @Override
   public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
   }

   @Override
   public boolean onOptionsItemSelected(MenuItem item){

        switch (item.getItemId()){
           case R.id.about:
                // code for about
                break;
           case R.id.exit:
                // code for exit
        }
        return true;
   }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".BaseActivity">

        <androidx.appcompat.widget.Toolbar
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:id="@+id/toolbar"
               android:background="@color/colorMatel"                   
               android:elevation="@android:dimen/app_icon_size"
               app:title="MyApplication"
               app:popupTheme="@style/ToolBarPopupStyle"
               app:theme="@style/ToolBarStyle" />

</RelativeLayout>
public class MainActivity extends BaseActivity {
      @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);        
      }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       tools:context=".MainActivity">

       <include layout="@layout/activity_base" />

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

      <item
          android:title="@string/about"
          android:id="@+id/about" />
      <item
          android:title="@string/exit"
          android:id="@+id/exit" />

</menu>
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
public class BaseActivity extends AppCompatActivity {

      // added this function
      public void initToolbar(){

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

      @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);               
           // removed setContentView(R.layout.activity_base);
      }

      ...
}
public class MainActivity extends BaseActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);    
          initToolbar();    
     }
}