onCreateOptionsMenu()没有在FragmentActivity上调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了onCreateOptionsMenu()没有在FragmentActivity上调用相关的知识,希望对你有一定的参考价值。
同事们,MainActivity
类来自FragmentActivity
,由于某种原因,活动的onCreateOptionsMenu()
没有被调用。我有onCreate()
的第一个断点,它正在被触发,而第二个断点在onCreateOptionsMenu()
,它没有被触发。
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
private FragmentPagerAdapter m_fragmentPagerAdapter;
private ViewPager m_viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adapter that will return a fragment for each of the primary sections of the activity.
m_fragmentPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
m_viewPager = (ViewPager) findViewById(R.id.container);
m_viewPager.setAdapter(m_fragmentPagerAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu); // Inflate the menu; this adds items to the action bar if it is present.
return true;
}
}
此应用程序中的碎片没有自己的菜单。属于该活动的一个菜单“涵盖”所有内容。
主题是Holo.Light
什么阻止onCreateOptionsMenu()
被召唤?我错过了什么?
仔细检查您是否确实将应用主题设置为Holo.Light
。我无法解释导致问题的原因,但我能够重现它。在尝试了FragmentActivity
和AppCompatActivity
之间的变化后,我不小心用FragmentActivity
和主题设置为Theme.AppCompat.Light
。这创建了你看到的行为,没有调用onCreateOptionsMenu()
。
作为一个侧面问题,你应该修复你的onCreateOptionsMenu()
来调用super,如documentation所述:“派生类应该总是调用基础实现”。
尝试:
setHasOptionsMenu();//call it from onCreate(); or onViewCreated();
此方法仅在片段中用于告知活动此片段具有选项菜单。
添加setHasOptionsMenu(true);在你的onCreate()方法中。
以上是关于onCreateOptionsMenu()没有在FragmentActivity上调用的主要内容,如果未能解决你的问题,请参考以下文章
在手机版本上运行时,没有在 FragmentActivity 上调用 onCreateOptionsMenu
如何在选项卡 Activity 的片段中使用 onCreateOptionsMenu? (夏洛克动作条)
Android无菜单键,如何触发onCreateOptionsMenu(Menu menu)