2012-06-20 1536 views
5

Tôi đã trải qua nhiều ví dụ, câu hỏi và hướng dẫn nhưng tôi chưa bao giờ thấy hoạt động khởi chạy (khởi chạy ý định mới) với một tab cụ thể. Tôi biết rằng người ta có thể sử dụng .setCurrentTab để chuyển sang tab, nhưng điều này có thể được thực hiện chỉ từ bên trong tab hoạt động chính. Làm cách nào để khởi chạy một tab cụ thể có trong một hoạt động từ một hoạt động khác? Có thể không? Nếu có thì làm sao?Cách khởi chạy hoạt động với một tab cụ thể?

Trong mã của tôi, người dùng khởi chạy hoạt động chuẩn được hiển thị tab đầu tiên, nhưng tôi muốn anh ấy chuyển đến tab thứ tư trong trường hợp anh ấy đang được chuyển hướng từ một hoạt động khác. Mã của tôi TabHost (MyTabActivity):

int tabIndex = 0; 

      mTabHost.addTab(mTabHost.newTabSpec("top10").setIndicator("Top 10").setContent(R.id.Top_10)); 
      mTabHost.addTab(mTabHost.newTabSpec("billable").setIndicator("Billable").setContent(R.id.Billable)); 
      mTabHost.addTab(mTabHost.newTabSpec("product").setIndicator("Product").setContent(R.id.Product)); 
      mTabHost.addTab(mTabHost.newTabSpec("regular").setIndicator("Regular").setContent(R.id.General)); 


      mTabHost.setCurrentTab(tabIndex); 

Bây giờ vào các hoạt động khác:

public void gotoTab() { 
//This will take me to the first tab 
Intent i = new Intent(this, MyTabActivity.class); 
startActivity(i); 
finish(); 
//How to I make it take me to the fourth tab? 
} 

Trả lời

11

Bạn sẽ cần phải xử lý nó cho mình với setCurrentTab trong constructor hoạt động mới.

Trong khi gọi, bạn nên đặt giá trị bổ sung trong mục đích -

Intent i = new Intent(this, MyTabActivity.class); 
i.putExtra("FirstTab", 4); 

Và trong constructor của MyTabActivity -

Intent i = getIntent(); 
int tabToOpen = i.getIntExtra("FirstTab", -1); 
if (tabToOpen!=-1) { 
    // Open the right tab 
} 
0

thử điều này với vị trí tab của bạn

Ý định ý định = new Intent (MyActivity.this, TabScreenActivity.class); intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.putExtra (ConstantString.ViewTab, 1); startActivity (intent);

Và trong constructor của TabScreenActivity

if (getIntent()! = Null) {

 tabPosition = getIntent().getIntExtra(ConstantString.ViewTab, tabPosition); 

     if (tabPosition == 1) { 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        viewPager.setCurrentItem(1, true); 
       } 
      }, 1000); 
     } else { 
      viewPager.setCurrentItem(0, true); 
     } 


    } else { 
     viewPager.setCurrentItem(0, true); 
    }