5

Ho seguito molti esempi, domande ed esercitazioni ma non ho mai visto un'attività lanciare (lanciare un nuovo intento) con una scheda specifica. So che si può usare .setCurrentTab per passare a una scheda, ma questo può essere fatto solo dall'interno della scheda attività padre. Che ne dici di avviare una scheda specifica contenuta in un'attività da una diversa attività? È possibile? Se è così, allora come?Come avviare un'attività con una scheda specifica?

Nel mio codice, su un'attività di avvio standard, all'utente viene visualizzata la prima scheda, ma desidero che passi alla quarta scheda nel caso in cui venga reindirizzata da un'altra attività. Il mio codice 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); 

Ora, in un'altra attività:

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

risposta

11

Sarà necessario gestire da soli con setCurrentTab nel costruttore della nuova attività.

Durante la chiamata, si dovrebbe mettere ulteriori valori nell'intento -

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

E nel costruttore di MyTabActivity -

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

provare questo con la vostra posizione scheda

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

E nel costruttore di TabScreenActivity

se (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); 
    }