Istniejące odpowiedzi (przekazać dane w Intent
przekazane do startActivity()
) pokazują normalny sposób rozwiązania tego problemu. Istnieje inne rozwiązanie, które można zastosować w przypadku, w którym tworzysz działanie, które zostanie uruchomione przez inną aplikację (na przykład jedną z czynności edycji w wtyczce Tasker) i dlatego nie kontrolujesz Intent
, która uruchamia Activity
.
Można utworzyć klasy base Activity
że ma konstruktora z parametrem, a następnie klasy pochodnej, która ma domyślnego konstruktora, który wywołuje konstruktor bazowym klasy o wartości, a więc:
class BaseActivity extends Activity
{
public BaseActivity(String param)
{
// Do something with param
}
}
class DerivedActivity extends BaseActivity
{
public DerivedActivity()
{
super("parameter");
}
}
Jeśli potrzebujesz wygenerować parametr do przekazania do konstruktora klasy podstawowej, po prostu zamień zakodowaną wartość na wywołanie funkcji, które zwraca poprawną wartość do przekazania.
może warto aby upewnić się, że b! = null zanim zaczniesz się z niego wyłapać – Andrew
W jaki sposób "b" może mieć wartość zerową w drugim działaniu tego kodu? Otrzymuję b ma wartość null przy tworzeniu metody drugiej aktywności. –
B może mieć wartość null, powiedzmy, że chcesz rozpocząć tę aktywność z innego miejsca i robisz to w standardowy sposób, bez żadnych parametrów. Rzuca NPE.Powinieneś zawsze brać pod uwagę te parametry opcjonalne. –