onCreateOptionsMenu 在开始新的时候没有被调用 activity
onCreateOptionsMenu not called when starting new activity
我的 onCreateOptionsMenu
仅在我的 MainActivity 中工作,当我尝试将另一个 onCreateOptionsMenu
放入另一个 activity 以膨胀不同的菜单时,它不显示我的菜单栏(请注意我在这两个活动中的设置完全相同。
我没有收到任何错误,它只是没有在我的辅助 activity 上显示我的菜单栏。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.expanded_view_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//noinspection SimplifiableIfStatement
int id = item.getItemId();
if (id == R.id.action_back) {
finish();
}
return super.onOptionsItemSelected(item);
}
另请注意,我将 getMenuInflater()
更改为 super.getMenuInflater()
并得到相同的结果。
不要忘记像这样调用父函数
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
....
}
您应该构建一个新的 xml 菜单 (Second.xml)。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);//Second es your new xml.
return true;
}
尝试在回调 onCreateOptionsMenu 实现中添加 super 方法。
return super.onCreateOptionsMenu(menu);
我遇到了同样的问题:- 我找到了适合我的解决方案。
1>检查您扩展的内容 class:- 就我而言,我已经尝试 activity 扩展 AppCompatActivity class 并且菜单正在显示正确,当我将其更改为 activity class 然后它停止显示。
不工作:-
public class GridViewActivity 扩展 Activity
2>尝试使用 AppCompatActivity class 来扩展您的 class 而不是 activity class.
工作:-
public class GridViewActivity 扩展 AppCompatActivity
如果您在 activity
中使用工具栏
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mToolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(mToolbar);
}
从 onCreate
调用 setHasOptionsMenu(true)
。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
我的问题是如果扩展 Activity,则不会触发 onCreateOptionsMenu。是否在 onCreate:
中手动执行
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.menu_main);
当然,toolbar是在CoordinatorLayout中定义的
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
我的 onCreateOptionsMenu
仅在我的 MainActivity 中工作,当我尝试将另一个 onCreateOptionsMenu
放入另一个 activity 以膨胀不同的菜单时,它不显示我的菜单栏(请注意我在这两个活动中的设置完全相同。
我没有收到任何错误,它只是没有在我的辅助 activity 上显示我的菜单栏。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.expanded_view_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//noinspection SimplifiableIfStatement
int id = item.getItemId();
if (id == R.id.action_back) {
finish();
}
return super.onOptionsItemSelected(item);
}
另请注意,我将 getMenuInflater()
更改为 super.getMenuInflater()
并得到相同的结果。
不要忘记像这样调用父函数
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
....
}
您应该构建一个新的 xml 菜单 (Second.xml)。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);//Second es your new xml.
return true;
}
尝试在回调 onCreateOptionsMenu 实现中添加 super 方法。
return super.onCreateOptionsMenu(menu);
我遇到了同样的问题:- 我找到了适合我的解决方案。
1>检查您扩展的内容 class:- 就我而言,我已经尝试 activity 扩展 AppCompatActivity class 并且菜单正在显示正确,当我将其更改为 activity class 然后它停止显示。
不工作:- public class GridViewActivity 扩展 Activity
2>尝试使用 AppCompatActivity class 来扩展您的 class 而不是 activity class.
工作:-
public class GridViewActivity 扩展 AppCompatActivity
如果您在 activity
中使用工具栏@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
mToolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(mToolbar);
}
从 onCreate
调用 setHasOptionsMenu(true)
。
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
我的问题是如果扩展 Activity,则不会触发 onCreateOptionsMenu。是否在 onCreate:
中手动执行Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.menu_main);
当然,toolbar是在CoordinatorLayout中定义的
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>