2011-02-18 78 views
0

朋友的, 我在我的應用程序中實現了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

回答

3

查看本手冊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

2

不要處理您標籤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); 
}