我的应用使用Actionbarsherlock
和ViewpagerIndicator
。每个页面使用1个片段。我希望每个页面都有不同的操作栏菜单,那么我该如何存档呢?
我已尝试在每个onCreateOptionsMenu
上使用SherlockFragment
,但操作栏菜单未显示,我也尝试了一些方法以编程方式添加菜单,但没办法。
@Override
public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu, com.actionbarsherlock.view.MenuInflater inflater)
{
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
谢谢!
* 编辑:添加更多详情*
如果我在Activity中使用onCreateOptionsMenu,则菜单(操作项)会正常显示。
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater menuInflater = getSupportMenuInflater();
menuInflater.inflate(R.menu.main, menu);
这就是我如何设置ActionPar的ViewPager
final ActionBar actionbar = getSupportActionBar();
actionbar .setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionbar .setDisplayHomeAsUpEnabled(true);
actionbar .setTitle("olala");
mFragmentAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(mFragmentAdapter);
mIndicator.setViewPager(mPager);
mIndicator.setOnPageChangeListener(new MyPageChangeListener());
mPager.setCurrentItem(3);
答案 0 :(得分:5)
我们需要在Fragment(onCreate或onCreateView)上添加它,以便通过接收对onCreateOptionsMenu(Menu,MenuInflater)和相关方法的调用来报告此片段想要参与填充选项菜单。
setHasOptionsMenu(true);
参考:http://developer.android.com/reference/android/app/Fragment.html
答案 1 :(得分:1)
我没有拨打super
的话也一样。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.chat_thread_list_fragment_menu, menu);
}
更新
我在活动的onCreate中设置了这个...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.profile_activity);
final ViewPager viewPager = (ViewPager) findViewById(R.id.profile_activity_pager);
final Intent intent = getIntent();
// I guess some setup should be done...
final ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
bar.setDisplayHomeAsUpEnabled(true);
if (intent.hasExtra(EXTRA_USER_NAME)) {
bar.setTitle(intent.getStringExtra(EXTRA_USER_NAME));
} else {
bar.setTitle(R.string.title_profile);
}
final PagerAdapter tabsAdapter = new TabsAdapter(this);
viewPager.setAdapter(tabsAdapter);
final TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.profile_activity_tabs);
titleIndicator.setViewPager(viewPager);
if (intent.hasExtra(EXTRA_TAB_ID)) {
final int tabId = intent.getIntExtra(EXTRA_TAB_ID, -1);
if (tabId > -1 && tabId < tabsAdapter.getCount()) {
viewPager.setCurrentItem(tabId);
}
}
}