Jos*_*osh 12 android android-viewpager android-actionbar
我无法获得以下代码来解决问题.我有viewpager3个片段,我想要一个只显示在一个上的搜索图标.我开始试图通过片段添加搜索功能,但是当滑动到该页面时,菜单项的渲染速度很慢.我现在要将搜索图标添加到活动中,然后根据viewpager活动的页面隐藏或显示,但以下操作不起作用:
public class MyApp extends FragmentActivity implements
FragmentTeams.FragmentNotification,ViewPager.OnPageChangeListener,
OnNavigationListener{
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
menuSearch = menu.findItem(R.id.menu_search);
mSearchView = new SearchView(this);
menuSearch.setActionView(mSearchView);
menuSearch.setVisible(false);
return true;
}
@Override
public void onPageSelected(int pageNum) {
if(pageNum== 1){
ActionBar actionBar = MyApp.this.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
menuSearch.setVisible(true);
invalidateOptionsMenu();
}else{
ActionBar actionBar = MyApp.this.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
menuSearch.setVisible(false);
invalidateOptionsMenu();
}
}
Run Code Online (Sandbox Code Playgroud)
虽然上面的(似乎)创建并隐藏了图标onCreateOptionsMenu,但在移动时不会重新启用
pageNum ==1
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我一些见解,为什么会发生这种情况?
Ner*_*een 22
invalidateOptionsMenu让系统调用方法onPrepareOptionsMenu,因此您可以按如下方式覆盖此方法:
public boolean onPrepareOptionsMenu(Menu menu) {
int pageNum = getCurrentPage();
if (pageNum == 1) {
menu.findItem(R.id.menu_search).setVisible(true);
}
else {
menu.findItem(R.id.menu_search).setVisible(false);
}
}
public void onPageSelected(int pageNum) {
invalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11762 次 |
| 最近记录: |