我正在使用fragments和tabHost,并且一切正常.我需要做的是:当我按下一个按钮时,它必须将我带到另一个片段,并且我需要更改选项卡的指示器:
当我按下按钮时,片段已更改,但选项卡指示器未更改.
现在,指示器仅在按下Tab键时才会改变,但是我希望在按下按钮时具有相同的效果.这可能吗?.
码:
public class AplicacionActivity extends FragmentActivity { final public static String tagFragmentClIEntes = "fragmentClIEntes";final public static String tagFragmentSettings = "fragmentSettings";final public static String tagFragmentlogout = "fragmentlogout"; /*Principal fragments of the tabs*/ClIEntesActivity fragmentClIEntes;SettingsActivity fragmentSettings;logoutActivity fragmentlogout; @OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_aplicacion); fragmentClIEntes = new ClIEntesActivity(); fragmentSettings = new SettingsActivity(); fragmentlogout = new logoutActivity(); mTabHost = (TabHost)findVIEwByID(androID.R.ID.tabhost); mTabHost.setonTabChangedListener(Listener); mTabHost.setup(); initializeTab();}public voID initializeTab() { Resources res = getResources(); TabHost.TabSpec spec = mTabHost.newTabSpec(tagFragmentClIEntes); spec.setContent(new TabHost.TabContentFactory() { public VIEw createTabContent(String tag) { return findVIEwByID(androID.R.ID.tabcontent); } }); spec.setIndicator(" ClIEntes ", res.getDrawable(R.drawable.clIEntes)); mTabHost.addTab(spec); spec = mTabHost.newTabSpec(tagFragmentSettings); spec.setContent(new TabHost.TabContentFactory() { public VIEw createTabContent(String tag) { return findVIEwByID(androID.R.ID.tabcontent); } }); spec.setIndicator(" Settings ",res.getDrawable(R.drawable.settings)); mTabHost.addTab(spec); spec = mTabHost.newTabSpec(tagFragmentlogout); spec.setContent(new TabHost.TabContentFactory() { public VIEw createTabContent(String tag) { return findVIEwByID(androID.R.ID.tabcontent); } }); spec.setIndicator(" logout ",res.getDrawable(R.drawable.logouticon)); mTabHost.addTab(spec);}TabHost.OnTabchangelistener Listener = new TabHost.OnTabchangelistener() { public voID onTabChanged(String tabID) { /*Set current tab..*/ if(tabID.equals(tagFragmentClIEntes)){ pushFragments(tagFragmentClIEntes, fragmentClIEntes, false); }else if(tabID.equals(tagFragmentSettings)){ pushFragments(tagFragmentSettings, fragmentSettings, false); }else if(tabID.equals(tagFragmentlogout)){ mostraravisoCIErreApp(); //nos saque el aviso de nuevo si lo volvemos a presionar. mTabHost.getCurrentTabVIEw().setontouchListener(new OntouchListener(){ @OverrIDe public boolean ontouch(VIEw v, MotionEvent event){ if (event.getAction() == MotionEvent.ACTION_DOWN){ if (mTabHost.getCurrentTabTag().equals(tagFragmentlogout)){ mostraravisoCIErreApp(); } } return false; } }); } }};public voID pushFragments(String tag, Fragment fragment, boolean backStack){ FragmentManager manager = getSupportFragmentManager(); FragmentTransaction ft = manager.beginTransaction(); ft.replace(androID.R.ID.tabcontent, fragment, tag); if(backStack){ ft.addToBackStack(null); } ft.commit();}}
解决方法:
调用tabHost.setCurrentTab(n)
其中tabHost是窗口小部件,n是要选择的选项卡的位置.
总结以上是内存溢出为你收集整理的android-按下按钮时更改标签的指示器(片段和tabHost)全部内容,希望文章能够帮你解决android-按下按钮时更改标签的指示器(片段和tabHost)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)