Android 更改片段时更改活动菜单
我有一个Android 更改片段时更改活动菜单,android,Android,我有一个main活动,有三个选项卡,在我的android应用程序中使用ViewPager和pagerslidingtastrip库 问题是,当片段更改(即选项卡更改)时,如何更改MainActivity的菜单 每个选项卡都有不同的菜单。如何执行此操作?在打开菜单资源之前,应在ViewPager中使用的每个片段中覆盖创建选项菜单,并使用menu.clear() 您可以检查如何在本文档中使用此功能 尝试“在运行时更改菜单项”一章。在我的例子中,我使用了两个片段……您只需要添加一个片段 碎片 它连
main活动
,有三个选项卡,在我的android应用程序中使用ViewPager
和pagerslidingtastrip库
问题是,当片段更改(即选项卡更改)时,如何更改MainActivity
的菜单
每个选项卡都有不同的菜单。如何执行此操作?在打开菜单资源之前,应在ViewPager中使用的每个片段中覆盖创建选项菜单,并使用menu.clear() 您可以检查如何在本文档中使用此功能
尝试“在运行时更改菜单项”一章。在我的例子中,我使用了两个片段……您只需要添加一个片段
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// 1 fragment activity
return new LoginFragment();
case 1:
// 2 fragment activity
return new RegisterFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 2;
}
}
你在这里所说的一切
public class MainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener,ActionBar.TabListener {
private ViewPager mViewPager;
private TabsPagerAdapter mAdapter;
private TabHost mTabHost;
private String[] tabs = { "1.Fragment", "2.Fragment"};
private TabHost.TabContentFactory mTabFactory = new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
View v = new View(MainActivity.this);
v.setMinimumHeight(0);
v.setMinimumWidth(0);
return v;
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_bottomtabs);
mViewPager = (ViewPager) findViewById(R.id.viewPager);
mViewPager.setOnPageChangeListener(this);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabHost.setOnTabChangedListener(this);
for (String tab_name : tabs){
TabHost.TabSpec spec =mTabHost.newTabSpec(tab_name);
spec.setIndicator(tab_name);
spec.setContent(mTabFactory);
mTabHost.addTab(spec);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mTabHost.setCurrentTab(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onTabChanged(String tabId) {
int position = -1;
if (tabId.contains("1.Fragment")) {
position = 0;
} else if (tabId.contains("2.Fragment")) {
position = 1;
}
mViewPager.setCurrentItem(position);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
}
我希望这有助于在此处共享您的代码,以更好地帮助您
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// 1 fragment activity
return new LoginFragment();
case 1:
// 2 fragment activity
return new RegisterFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 2;
}
}
public class MainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener,ActionBar.TabListener {
private ViewPager mViewPager;
private TabsPagerAdapter mAdapter;
private TabHost mTabHost;
private String[] tabs = { "1.Fragment", "2.Fragment"};
private TabHost.TabContentFactory mTabFactory = new TabHost.TabContentFactory() {
@Override
public View createTabContent(String tag) {
View v = new View(MainActivity.this);
v.setMinimumHeight(0);
v.setMinimumWidth(0);
return v;
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_bottomtabs);
mViewPager = (ViewPager) findViewById(R.id.viewPager);
mViewPager.setOnPageChangeListener(this);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabHost.setOnTabChangedListener(this);
for (String tab_name : tabs){
TabHost.TabSpec spec =mTabHost.newTabSpec(tab_name);
spec.setIndicator(tab_name);
spec.setContent(mTabFactory);
mTabHost.addTab(spec);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mTabHost.setCurrentTab(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onTabChanged(String tabId) {
int position = -1;
if (tabId.contains("1.Fragment")) {
position = 0;
} else if (tabId.contains("2.Fragment")) {
position = 1;
}
mViewPager.setCurrentItem(position);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
}