Napisałem aplikację, a teraz, po wydaniu, niektórzy z moich użytkowników mają paskudny błąd. Tego, którego po prostu nie mogę odtworzyć.Android onActivityResult. Zmienna użytkownika jest czasami pusta
Zaangażowane są w to trzy działania.
aktywny 1: SuperActivity
public abstract class SuperActivity extends Activity
Activity 2: główną działalność
public class MainActivity extends SuperActivity {
private MyObject myMemberVariable;
@Override
public void onCreate(Bundle savedInstanceState) {
//Get the intent that started this activity. I am always providing Extras, so this is never null.
Bundle bundle = getIntent().getExtras();
//Set stuff in myMemberVariable from these extras. This never fails either.
myMemberVariable = BundleLoader.loadFromBundle(bundle);
}
@Override
public void onListDialogClick(int requestCode, String[] options, int position, String extra) {
//THIS is the place where, according to my stacktrace from the DeveloperConsole, the null pointer arises.
myMemberVariable.setXY(position);
}
Activity 3: ListDialogActivity
public class ListDialogActivity extends SuperActivity
Co ja robię tu ja uruchomić ListDialogActivity z główną działalność przedstawić użytkownikowi kilka opcji. Po dokonaniu wyboru, ListDialogActivity ustawi wynik, a następnie zakończy. W SuperActivity mam:
onActivityResult(int requestCode, int resultCode, Intent data) {
//if activityRequestCode was ListDialogRequestCode and the Result was RESULT_OK, then call onListDialogClick(..) with the appropriate values.
}
Tak to jest jak onListDialogClick() w moim główną działalność jest wywoływany (Więc można tylko myśleć o nim jako o normalnym onActivityResult()). Tam, NIEKTÓD kilku użytkowników ma wyjątek wskaźnika pustego, ponieważ mojaMemberVariable ma wartość null.
Nie mogę dowiedzieć się, co się tutaj dzieje. Ponadto zapisuję stan wystąpienia, aby obsłużyć obrót telefonu, ale nawet jeśli nie, ponieważ onCreate zostanie przywołany, nadal nie będzie miał wartości NULL, utraciłby tylko swój stan i został odtworzony z pierwotnego założenia.
Czy ktoś może mi wyjaśnić, jak to jest możliwe i co się tutaj dzieje? Czy nie udało mi się zrozumieć czegoś z Androida? Dlaczego dzieje się tak tylko z kilkoma osobami? Co mogłoby być tego przyczyną? Byłbym bardzo wdzięczny za choćby najmniejszą sugestię.
Dziękuję bardzo!
Jakiś wspólny czynnik z urządzeniami, na których się to dzieje? – JRaymond
Nie znalazłem jeszcze wspólnego elementu (jestem pewien, że stało się to z kimś z Galaxy S2 z CM9 i kimś z HTC jeden x.) Ale poza tym nie wiem, ponieważ konsola dev nie pokaż mi urządzenia, z których pochodzą błędy. – metter
gdzie jest zainicjowana opcja 'myMemberVariable'? W kodzie widzę, że musi zawsze mieć wartość 'null', ponieważ jest równe' private MyObject myMemberVariable = null; ' – zapl