Autore Topic: Come fare a gestire vari tabHost richiamandoli da altre classi  (Letto 764 volte)

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Come fare a gestire vari tabHost richiamandoli da altre classi
« il: 22 Dicembre 2011, 12:44:50 CET »
0
Ciao a tutti.. ho un problemino di logica che non capisco come superare...
Il mio intento sarebbe quello di stabilire se l'applicazione parte la prima volta, quindi se parte al prima volta si deve aprire il tab del Login, altrimenti si dovrebbe aprire il tab principale.

La gestione del primo avvio l'ho eseguita con le SharedPreferences e funziona... ma non so come gestire il cambio del tab..

io avevo fatto una cosa simile

Codice (Java): [Seleziona]
public class MiaActivity extends TabActivity {
    /** Called when the activity is first created. */
        SharedPreferences preferences;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
    }
@Override
    protected void onResume()
   {
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;
    Intent intent;

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, LoginActivity.class);
    spec = tabHost.newTabSpec("login").setIndicator("Login",
                      res.getDrawable(R.drawable.ic_tab_login))
                  .setContent(intent);
    tabHost.addTab(spec);
   
    intent = new Intent().setClass(this, ActivityPrincipale.class);
    spec = tabHost.newTabSpec("1").setIndicator("1",
                      res.getDrawable(R.drawable.ic_tab_1))
                  .setContent(intent);
    tabHost.addTab(spec);
   

    intent = new Intent().setClass(this, AltraActivity.class);
    spec = tabHost.newTabSpec("2").setIndicator("2",
                      res.getDrawable(R.drawable.ic_tab_2))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(1);
        super.onResume();
        mostraToastPrimoAvvio();
}

private static final String PRIMO_AVVIO = "primo_avvio";

private void mostraToastPrimoAvvio()
{
        SharedPreferences prefs = getPreferences(MODE_PRIVATE);
        if (prefs.getBoolean(PRIMO_AVVIO, true))
        {
                Toast.makeText(this, R.string.primo_avvio, Toast.LENGTH_LONG).show();
                Editor prefsEditor = prefs.edit();
                prefsEditor.putBoolean(PRIMO_AVVIO, false);
                prefsEditor.commit();
        }
}
}

cosi... funziona.. mi compare il toast del primo avvio...

Ma se volessi fare una cosa del genere...

Codice (Java): [Seleziona]
private void mostraPrimoAvvio()
{
        SharedPreferences prefs = getPreferences(MODE_PRIVATE);
        if (prefs.getBoolean(PRIMO_AVVIO, true))
        {
       
                tabHost.setCurrentTab(0); //tab del login
                Editor prefsEditor = prefs.edit();
                prefsEditor.putBoolean(PRIMO_AVVIO, false);
                prefsEditor.commit();
        }
}

Come potrei fare a passare il tabHost.setCurrentTab(0); all'interno di questa classe?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #1 il: 22 Dicembre 2011, 13:05:05 CET »
0
Essendo tabHost una variabile locale del metodo onResume (l'hai definita li dentro) chiaramente non puoi accederci dentro il metodo mostraPrimoAvvio.
Per fare ciò basta che definisci la variabile tabHost cone attributo della classe MiaActivity, proprio come hai fatto per la variabile preferences.

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #2 il: 22 Dicembre 2011, 13:21:02 CET »
0
Codice (Java): [Seleziona]
TabHost tabHost;Grazie, ci avevo gia provato, ma prima come ora mi da questo errore all'avvio dell'applicazione...
Forse non sta li il problema...
« Ultima modifica: 22 Dicembre 2011, 13:30:05 CET da dr4gone »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #3 il: 22 Dicembre 2011, 13:22:43 CET »
0
Codice: [Seleziona]
12-22 12:13:07.784: E/AndroidRuntime(3311): Caused by: java.lang.NullPointerException
12-22 12:13:07.784: E/AndroidRuntime(3311):    at com.brunolagana.PostepayActivity.mostraPrimoAvvio(PostepayActivity.java:93)
12-22 12:13:07.784: E/AndroidRuntime(3311):    at com.brunolagana.PostepayActivity.onResume(PostepayActivity.java:83)

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #4 il: 22 Dicembre 2011, 13:27:19 CET »
0
edit
« Ultima modifica: 22 Dicembre 2011, 13:48:09 CET da dr4gone »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #5 il: 22 Dicembre 2011, 13:28:37 CET »
+1
Se la dichiari nella classe non devi dichiararla anche nell'onResume altrimenti sono due variabili diverse!

Offline dr4gone

  • Utente junior
  • **
  • Post: 66
  • Respect: +1
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #6 il: 22 Dicembre 2011, 13:44:53 CET »
0
Grazie.. Funziona...
Sto imparando tutto ora da zero... Anche per quanto riguarda il linguaggio in se vero e prorpio...Si vede che sono un principiante :)

Codice (Java): [Seleziona]
public class ActivityPrincipale extends TabActivity {
    /** Called when the activity is first created. */
        TabHost tabHost;  // The activity TabHost
........

e poi dentro bastava fare cosi..
Codice (Java): [Seleziona]
tabHost = getTabHost();
Ho imparato una cosa nuova! ;)

« Ultima modifica: 22 Dicembre 2011, 13:49:05 CET da dr4gone »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Come fare a gestire vari tabHost richiamandoli da altre classi
« Risposta #7 il: 22 Dicembre 2011, 13:50:42 CET »
0