2015-04-18 1 views
11

So che probabilmente è estremamente semplice, ma non riesco a capirlo.Come chiamare recreate()?

Sto tentando di ricaricare/ricreare un'attività dopo un'azione. So che potrei semplicemente usare:

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

Ma nella lettura attraverso risposte sul sito mi è stato detto di usare 'ricreare()' dopo l'11 api. Qualsiasi aiuto sarebbe apprezzato, grazie!

risposta

22

Mentre si utilizza il metodo recreate funziona facendo

this.recreate() 

E 'stato aggiunto solo nel livello di API 11 . Se si desidera includere più dispositivi è possibile controllare il livello di API e implementare sia il metodo Ricrea così come

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

È può usare entrambi facendo un'istruzione if come ...

if (android.os.Build.VERSION.SDK_INT >= 11){ 
//Code for recreate 
recreate(); 

}else{ 
//Code for Intent 
Intent intent = getIntent(); 
finish(); 
startActivity(intent); 
} 
+0

Stesso commento sopra - Incredibilmente semplice, grazie mille! Grazie anche per la spiegazione aggiuntiva e in caso di controllo (utilizzando specificamente il mio progetto). –

+0

Sto eseguendo qualche compito all'interno di un thread. Non riesco a chiamare il metodo recreate()? – ManishNegi

+0

Non sei completamente sicuro di cosa intendi? Hai provato mContext.recreate()? –

2

this.recreate() è tutto ciò che serve. Attacca quel codice all'interno di un metodo che vive nell'attività che desideri ricaricare. Ho un progetto in cui questo è legato ad un clic del pulsante, ma è possibile utilizzarlo comunque è necessario.

+0

Incredibilmente semplice, grazie mille! –

1

Sono un po 'confuso dalla tua domanda, tu stesso hai risposto alla domanda nella tua risposta. Chiamare il metodo ricreare direttamente ...

Dalla documentazione per recreate():

Causa questa attività per essere ricreata con una nuova istanza. Ciò comporta essenzialmente lo stesso flusso di quando viene creata l'attività a causa di una modifica della configurazione: l'istanza corrente passerà attraverso il suo ciclo di vita a onDestroy() e una nuova istanza creata successivamente.

chiamata recreate() dall'interno del codice attività anziché

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

per riavviare l'attività (dopo API 11 che è).

Vedi this risposta per una routine di ricreare in modo più generico che funziona anche per prima API/SDK 11.

+0

Grazie CPU! Volevo solo iniziare ad aggiornare il mio progetto. Sono stato buttato via da "questo" per qualche motivo. –