I'm working on sample viewpager using fragment. What I want is to show the fragment menus change dynamically once I swipe from one to another. I'm using AppCompat library. I'm getting the menus, but not on actionbar. Please help me on this.
My code goes like this.
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 and 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);
}
}