需要安卓tabhost回按导航

问题描述:

朋友的, 我在我的应用程序中实现了tabhost,我有三个选项卡定义在我的活动tab1,tab2,tab3 ...在这里我有一个问题,从on3键导航tab3到tab1按事件,我怎么能从tab3和tab2到达tab1,我尝试了使用override keyback按下,但有时它不响应navigate.without覆盖onkey回来按下它只是退出应用程序。需要安卓tabhost回按导航

这里我的代码

tabHost= getTabHost(); 

     tabHost.addTab(tabHost.newTabSpec("tab1").setContent(
       new Intent(this, DealCities.class)).setIndicator(prepareTabView("Deals",R.drawable.test))); 

     tabHost.addTab(tabHost.newTabSpec("tab2").setContent(new Intent(this, DbServerActivity.class)) 
         .setIndicator(prepareTabView("My QuadDeals",R.drawable.mydeal))); 

     tabHost.addTab(tabHost.newTabSpec("tab3").setContent(new Intent(this, Account.class)) 
       .setIndicator(prepareTabView("My Account",R.drawable.img_myaccount))); 

在这里一个类和tabhost对象是静态的定义tabhost,

这里离我的TAB2回压事件后面的代码,

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 

      try {    
//    userdealList.setVisibility(View.GONE);    
//    logalertTable.setVisibility(View.GONE); 
//    dealType.setVisibility(View.GONE); 
//    mydealBack=1; 
//    QuadMain.tabHost.setCurrentTab(0); 
       Intent i = new Intent(); 
       i.setClass(DbServerActivity.this, QuadMain.class); 
       i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(i); 

      } catch (Exception e) { 

      } 
      return true; 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

它工作正常有时只有有时它不工作..

在此先感谢。

+1

你有你的onBackPressed方法是什么码? – techiServices 2011-02-18 08:28:31

+0

看看我的问题再次我发布我的代码...事件我试图setCurrentTab()索引也是一样的问题 – 2011-02-18 08:30:48

查看本手册http://knightswhocode.com/wordpress/?p=46 - 教授如何使用TabHost。不幸的是,通过默认的onkeyBackPressed事件,您只需转到上一个活动,并且因为您有一个主要的tabhost活动,它就会退出。我建议你重写按下后退键,使用下面的方法:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     YourParentActivity parentActivity; 
     parentActivity = (YourParentActivity) this.getParent(); 
     parentActivity.switchTab(indexTabToSwitchTo); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

可以请给我详细的上面的代码,这里的ParentActivity和MinTrack是什么 – 2011-02-18 08:44:07

不要处理您标签activitys KeyEvent.KEYCODE_BACK,做在主TabActivity。

只要您的选项卡活动onKeyDown()方法不处理它,但他们确实调用super.onKeyDown(keyCode, event);它将过滤到您的TabActivity。

在你TabActivity有一个成员int currentTab = 0然后在TabActivity做到这一点...

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     if (currentTab == 0) 
      currentTab = 2; 
     else 
      currentTab--; 
     tabHost.setCurrentTab(currentTab); 
     return true; 
    } 
    else 
     return super.onKeyDown(keyCode, event); 
}