Le risposte esistenti (passare i dati nello Intent
passati a startActivity()
) mostrano il modo normale per risolvere questo problema. Esiste un'altra soluzione che può essere utilizzata nel caso strano in cui si sta creando un'attività che verrà avviata da un'altra app (ad esempio, una delle attività di modifica in un plug-in Tasker) e pertanto non controllare lo Intent
che avvia il Activity
.
È possibile creare una classe base Activity
che ha un costruttore con un parametro, quindi una classe derivata che ha un costruttore di default, che chiama il costruttore della classe base con un valore, come così:
class BaseActivity extends Activity
{
public BaseActivity(String param)
{
// Do something with param
}
}
class DerivedActivity extends BaseActivity
{
public DerivedActivity()
{
super("parameter");
}
}
Se è necessario generare il parametro da passare al costruttore della classe base, è sufficiente sostituire il valore hardcoded con una chiamata di funzione che restituisce il valore corretto da passare.
fonte
2014-08-27 01:49:25
si consiglia per assicurarsi che b! = null prima di iniziare ad afferrare da esso – Andrew
Come può "b" essere nullo nella seconda attività in questo codice? Ottengo b è nullo sul metodo di creazione della seconda attività. –
B può essere nullo, diciamo che vuoi iniziare questa attività da un altro posto e lo fai in modo standard, senza parametri. Lancia un NPE.Si dovrebbe sempre considerare questo param opzionale. –