在写项目的时候,遇到过这样的情况。我有几个活动,每个活动都有相同类型的工具栏。我不想在每一行都写相同的行,因此我创建了一个抽象类 BaseActivity。其中的 onCreate 方法运行良好,但出于某种原因,onCreateOptionsMenu 方法不想在从 BaseActivity 继承的每个活动中显示我的 3 个正确图标。这个方法简直是空!是否有另一种方法来创建菜单,或者我是否需要添加一些东西才能显示图标?菜单本身是用经典的方式创建的——通过带有 item 的 drawable。抽象类代码:
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
}
在 onCreate() 方法中,您没有 setContentView() 方法,您没有从布局中获取视图,因此 findViewById(R.Id.toolbar) 找不到您的工具栏
这样做,但不是 R.layout.acyivity_fragment 设置你的布局
ps不要忘记,对于每个活动你需要设置自己的布局,我认为在抽象类中只留下onCreateOptionsMenu()会更容易,而在Activity类本身中编写onCreate(),因为对于每个活动,方法都可以非常不一样。