【发布时间】:2014-03-17 19:18:20
【问题描述】:
我正在使用片段制作示例查看器。我想要的是显示片段菜单在我从一个滑动到另一个时动态变化。我正在使用 AppCompat 库。我正在获取菜单,但不是在操作栏上。请帮我解决这个问题。
我的代码是这样的。
MainActivity.java
public class MainActivity extends ActionBarActivity {
ActionBar actionBar;
ViewPager pager;
Tab tab;
int selectedPage = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
pager = (ViewPager) findViewById(R.id.tabs);
FragmentManager manager = getSupportFragmentManager();
ViewPager.SimpleOnPageChangeListener pageListener = new ViewPager.SimpleOnPageChangeListener(){
public void onPageSelected(int position){
super.onPageSelected(position);
selectedPage = position;
actionBar.setSelectedNavigationItem(position);
}
};
pager.setOnPageChangeListener(pageListener);
PagerAdapter adapter = new PagerAdapter(manager);
pager.setAdapter(adapter);
TabListener tabListener = new TabListener() {
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};
//Creating tabs
tab = actionBar.newTab().setText("Fragment1").setTabListener(tabListener);
actionBar.addTab(tab);
tab = actionBar.newTab().setText("Fragment2").setTabListener(tabListener);
actionBar.addTab(tab);
}
}
片段 1 和片段 2。爪哇
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main, container, false);
return view;
}
/* (non-Javadoc)
* @see android.support.v4.app.Fragment#onCreateOptionsMenu(android.view.Menu, android.view.MenuInflater)
*/
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment2, menu);
}
/* (non-Javadoc)
* @see android.support.v4.app.Fragment#onActivityCreated(android.os.Bundle)
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
}
【问题讨论】:
-
您是指 TitleProvider 吗?它将在 viewpager 上显示您的片段的标题..
-
否则您可以继续使用 TitlePageIndicator。检查此链接:stackoverflow.com/questions/10037887/…
-
没有。我的意思是我想在fragment1上显示名为“set”的菜单选项,在fragment2上显示“get”选项。如何动态显示。
-
@Lokesh: 它应该出现在操作栏上。
-
菜单选项仅显示在操作栏上。目前它在哪里显示??
标签: android android-fragments android-viewpager android-appcompat