2012-10-05 4 views
5

ho l'attività A dove posso accedere al A->B->C->Dpulsante Indietro stampa ha bisogno di mostrare il valore aggiornato in attività

In Activity D ho un pulsante che, se user'll premere questo pulsante, che andrà a Activity A . Qui creerò una nuova istanza in cui l'utente può aggiornare il valore qui.

finisco l'attività, che andremo a Activity D, da Activity D user'll premere Back Button
D->C->B->A
e verrà a Activity A.

Devo mostrare il valore aggiornato in Activity A, come posso aggiornare il valore in "Attività A"?

+1

@RobinHood che sarebbe orribile (onResume)! –

risposta

4

Stai andando a voler avere un sacco di startActivityForResult() s e fondamentalmente li catena da D ad A.

vedere qui: How can I pass values between Activities on Android?

In alternativa, è possibile memorizzare il valore come SharedPreferences e basta cercarlo in seguito, una volta che si ritorna all'attività originale.

0

Includi questo snippet nella tua attività D.

@Override 
public void onBackPressed(){ 
    aMethodToUpdateYourActivityA(); 
    } 
2

Utilizzare Shared Preferences per salvare i dati. In questo modo otterrai i dati in tutte le tue attività.

0

Si può imparare di più su ciclo di vita di attività e la gestione dei dati qui Activity

Per quanto riguarda la tua domanda si dovrebbe fare qualsiasi aggiornamento dei dati dal metodo di onResume all'interno della vostra attività A.

@Override 
public void onResume(){ 
    //Update your data here 
} 

Se la vostra preoccupazione è COME passare i dati tra loro, probabilmente dovresti usare Shared preferences, dato che avere un carico di startActivityForResult su così tante attività non è realmente consigliato. Inoltre è davvero necessario avere quella gerarchia? Sarebbe più facile se l'utente aggiorna i dati, si dovrebbe semplicemente avviareActivityA e passare i dati direttamente.

0

Questo può essere fatto in 2 modi:

  1. uso comune preferenze e memorizzare il vostro valore aggiornato, quindi onResume() di attività A, leggerlo dalle stesse preferenze condivise e aggiornare il valore.

  2. avviare le attività utilizzando startActivityForResult e raccogliere i valori utilizzando l'oggetto intent e passarlo nuovamente alle attività precedenti utilizzando setResult.

+0

Grazie per tutto il tuo aiuto – mohan

4

penso che è necessario utilizzare SharedPreference per contenere i dati sul pulsante Indietro clic o utilizzare variabile statica.

// ------------------ ------------------ Per memorizzare i dati

SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putInt("key", countValue); 
       editor.commit(); 

// --------------------- Per ottenere dati ------------------

if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
    Intent home=new Intent(PersentActivity.this,DesiredActivity.class); 

       sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE); 
      int countValue = sharedPreferences.getInt("key", 0); 

       startActivity(home); 

       return true; 
      } 
1

se non si memorizzano i dati durante l'aggiornamento di Activity A, penso che sia meglio memorizzarli in variabili statiche di Activity A e caricare i dati nel proprio onResume().

Se si dispone di un database, archiviare i dati in Activity A dal database nel numero onResume().

Problemi correlati