Android onActivityResult. Переменная-член иногда имеет значение null

Я написал приложение, и теперь, после релиза, некоторые из моих пользователей столкнулись с неприятной ошибкой. Тот, который я просто не в состоянии воспроизвести.

В этом участвуют три Деятельности.

Активность 1: SuperActivity

public abstract class SuperActivity extends Activity

Активность 2: MainActivity

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);
  }

Активность 3: ListDialogActivity

public class ListDialogActivity extends SuperActivity

Здесь я запускаю ListDialogActivity из MainActivity, чтобы предоставить пользователю несколько вариантов выбора. Как только он сделал выбор, ListDialogActivity установит результат, а затем завершит работу. В SuperActivity у меня есть:

onActivityResult(int requestCode, int resultCode, Intent data) {
  //if activityRequestCode was ListDialogRequestCode and the Result was RESULT_OK, then call onListDialogClick(..) with the appropriate values.
}

Итак, вот как вызывается onListDialogClick() в моей MainActivity (так что вы можете просто думать об этом как об обычном onActivityResult()). Там НЕКОТОРЫЕ пользователи сталкиваются с исключением нулевого указателя, потому что myMemberVariable имеет значение null.

Я не могу понять, что здесь происходит. Кроме того, я сохраняю состояние своего экземпляра для обработки поворотов телефона, но даже если бы я этого не делал, поскольку onCreate будет отозван, он все равно не будет нулевым, он только потеряет свое состояние и будет воссоздан из первоначальный намерение.

Кто-нибудь может объяснить мне, как это возможно и что здесь происходит? Я что-то не понял из Android? Почему это происходит только с несколькими людьми? Что может быть причиной этого? Буду очень признателен даже за малейшее предложение.

Большое спасибо!

9
задан metter 29 April 2012 в 15:54
поделиться