我正在使用片段处理示例viewpager。我想要的是显示片段菜单从一个菜单切换到另一个时动态变化。我正在使用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);
}
}
Fragment1和Fragment2。的java
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);
}
}
答案 0 :(得分:0)
通过改变您的方法来提供跟踪:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment2, menu);
}
要:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Auto-generated method stub
inflater.inflate(R.menu.fragment2, menu);
super.onCreateOptionsMenu(menu, inflater);
}
并在menu.xml中更改项目
<item
android:id="@+id/something"
android:icon="@drawable/ic"
yourapp:showAsAction="ifRoom"
android:title="@string/something"/>
别忘了添加setHasOptionsMenu(true);
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}