【发布时间】:2015-04-05 04:52:11
【问题描述】:
我的 Android 应用中有一个带有片段的 ViewPager。我想根据 ViewPager 的片段显示操作栏菜单项。我已经阅读了一些关于此的问题,但我找不到正确的解决方案。我的 ViewPager 的代码是这样的:
public class My_Activity extends ActionBarActivity {
private ViewPager mViewPager;
String idioma;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_main);
ActionBar actionBar = getSupportActionBar(); // || getActionBar();
actionBar.setIcon(getResources().getDrawable(R.drawable.navbar_logo));
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#CC3333")));
actionBar.setTitle("Hello");
mViewPager = (ViewPager) findViewById(R.id.viewpager);
PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pagerTabStrip);
pagerTabStrip.setTabIndicatorColor(getResources().getColor(R.color.blanco));
Title_Liga_Adapter titleAdapter = new Title_Liga_Adapter(getSupportFragmentManager());
mViewPager.setAdapter(titleAdapter);
mViewPager.setCurrentItem(0);
getSupportActionBar().setIcon(R.drawable.navbar_logo);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mViewPager.getCurrentItem() == 4) {
getMenuInflater().inflate(R.menu.menu_comunidad,
menu);
} else {
}
return true;
}
/* *
* Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.action_search)
.setVisible(true);
return super.onPrepareOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
this.finish();
return true;
case R.id.action_search:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
我希望 CurrentItem 为 4 时显示菜单项图标。
【问题讨论】:
-
你可以实现 OnPageChangeListener developer.android.com/reference/android/support/v4/view/… 并且你可以在 onPageSelected 函数中做任何你想做的事情。
-
我已经用 onPageChangeListener 更新了我的代码,但是我如何在其中创建菜单呢?谢谢
-
这里会调用invalidateOptionMenu函数onCreateOptionMenu,你可以根据可见页面膨胀菜单
-
通过调用 invalidateOptionMenu 函数 onCreateOptionMenu 将被调用在这里你可以根据可见页面膨胀菜单像这样 MenuInflater inflater=getMenuInflater(); inflater.inflate(R.menu.menu,menu);
-
对不起,我的英语说得不太好,我必须在哪里调用 invalidateOptionsMenu?可以放示例代码吗?对不起。
标签: android android-actionbar android-viewpager menu-items