5

Przeszedłem wiele przykładów, pytań i samouczków, ale nigdy nie widziałem uruchomienia działania (uruchomienie nowego zamiaru) z określoną zakładką. Wiem, że można użyć .setCurrentTab, aby przejść do zakładki, ale można to zrobić tylko z poziomu zakładki nadrzędnej aktywności. Co powiesz na uruchomienie konkretnej zakładki zawartej w jednym działaniu z innego działania? Czy to możliwe? Jeśli tak, to w jaki sposób?Jak uruchomić działanie za pomocą określonej karty?

W moim kodzie, na standardowym uruchomieniu działania, użytkownik wyświetla pierwszą kartę, ale chcę, aby trafił na czwartą kartę, na wypadek, gdyby został przekierowany z innej aktywności. Mój kod 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); 

Teraz w innej działalności:

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? 
} 

Odpowiedz

11

Trzeba będzie obsługiwać się z setCurrentTab w konstruktora nowej działalności za.

Podczas nawiązywania połączenia należy umieścić dodatkowe wartości w intencji -

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

A w konstruktorze MyTabActivity -

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

spróbować tego z pozycji zakładki

Intent intent = new Intent (MyActivity.this, TabScreenActivity.class); intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.putExtra (ConstantString.ViewTab, 1); startActivity (zamiar);

A w konstruktorze 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); 
    } 
Powiązane problemy