2011-11-24 3 views
0

내 프로젝트의 탭을 구현해야합니다 .i 레이아웃이 있는데 여기에는 두 개의 탭과 버튼이 있습니다. 두 개의 탭에 대해 두 개의 활동과 버튼이 각각 다른 활동을합니다. 것은 첫 번째 탭에 버튼의 결과를 표시하고 있습니다. 이제 내가 원하는 것은 첫 번째 탭을 누르면 첫 번째 탭 의도가 표시되어야한다는 것입니다. 또는 탭을 변경하면 탭의 해당 의도가 표시됩니다. 동일한 탭에서 다른 활동을 호출하는 방법

나는 다음 코드를 시도,하지만 당신은 버튼 AddNewTicketActivity는 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

표시 TAB1 클릭합니다. 그런 다음 TAB2로 이동하고 TAB1로 돌아 오면 TAB1Actvity를보고 싶습니다. 이 경우 네는 일

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

onTabChanged 방법이 을 시도,하지만 난 버튼을 추가하려는 반면, 단지 내가 TAB2 오전 때, 나는 TAB1에 온이 버튼을 클릭 한 후 addNewTicket 버튼을 클릭 할 수 있어요 각 탭을 클릭하십시오. – Romi

+0

버튼이 모든 탭에서 AddNewTicket을로드하고 코드를 다음과 같이 수정하려면 Intent = new Intent(). setClass (getApplicationContext(), AddNewTicketActivity.class); sp1.setContent (입력); tabHost.setCurrentTab (0); – user994886

+1

버튼이 AddNewTicket을 현재 탭에로드하고 버튼 클릭 리스너에서이 버튼을 사용하려면 이전 메모를 무시하십시오. tabHost, setCurrent (TabHost.getCurrentTab()) – user994886

관련 문제