2011-11-24 57 views
0

我需要在我的項目中實現選項卡。我有一個佈局,其中有兩個選項卡和一個按鈕。 對於兩個選項卡,我有兩個活動和按鈕調用不同的活動。 事情是我在第一個標籤上顯示按鈕的結果。現在我想要的是,如果我按第一個選項卡,應該顯示第一個選項卡意圖。或者如果我更改標籤,應該顯示標籤的相應意圖。如何在同一個選項卡上調用不同的活動

我嘗試下面的代碼,但點擊按鈕後,每次我上TAB1點擊,按鈕的意圖表示

public class TabLayoutUsingTabChangeEventActivity extends TabActivity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main);     
      final TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost); 
      final TabHost.TabSpec sp1 = tabHost.newTabSpec("TAB1"); 
      TabHost.TabSpec sp2 = tabHost.newTabSpec("TAB2"); 

      //Creating First Tab 
      Intent intent1 = new Intent(this, Tab1Activity.class); 
      sp1.setIndicator("TAB1").setContent(intent1); 
      tabHost.addTab(sp1); 

      //Creating Second Tab 
      Intent intent2 = new Intent(this, Tab2Activity.class); 
      sp2.setIndicator("TAB2").setContent(intent2); 
      tabHost.addTab(sp2);    

      //Tab Changed Event 
      tabHost.setOnTabChangedListener(new OnTabChangeListener(){ 
       @Override 
       public void onTabChanged(String tabId) { 
        Log.i("TabId :", tabId); 
        if(tabId.equals("TAB1")){ 
        Log.i("TAB1", "TAB1 Changed"); 
        Intent intent1 = new Intent().setClass(getApplicationContext(), Tab3Activity.class); 
        sp1.setIndicator("TAB1").setContent(intent1); 
        tabHost.setCurrentTab(0); 
        } 
        } 
      }); 

      Button addNewButton = (Button)findViewById(R.id.add_new_ticket_btn); 
      addNewButton.setOnClickListener(new OnClickListener(){ 
        @Override 
        public void onClick(View v) { 
        Intent in = new Intent().setClass(getApplicationContext(), AddNewTicketActivity.class); 
        sp1.setContent(in); 
        tabHost.setCurrentTab(0); 
        //startActivity(in); 
       } 
      });    
     } 
} 

回答

1

據我瞭解,當您單擊按鈕AddNewTicketActivity在TAB1所示。然後你去TAB2,當你回到TAB1時,你想看到TAB1Actvity。在這種情況下,試試這個 在onTabChanged方法

  if (tabId.equals("TAB2")){ 
        Intent intent1 = new Intent(this, Tab1Activity.class); 
        sp1.setIndicator("TAB1").setContent(intent1); 
      } 
+0

是的,它的工作,但我能夠點擊addNewTicket按鈕只有當我在TAB2,然後點擊此按鈕我來到TAB1之後,而我想添加按鈕點擊每個標籤。 – Romi

+0

如果您希望按鈕在每個選項卡中加載AddNewTicket,請按照以下方式修改代碼Intent in = new Intent()。setClass(getApplicationContext(),AddNewTicketActivity.class); sp1.setContent(in); tabHost.setCurrentTab(0); – user994886

+1

如果你想讓按鈕在當前選項卡中加載AddNewTicket,那麼忽略先前的註釋,然後在你的按鈕點擊監聽器--tabHost,setCurrent(TabHost.getCurrentTab()) – user994886

相關問題