2015-03-18 3 views
0

У меня возникли проблемы с восстановлением состояния одного из моих действий. Я начала деятельности B в пределах от активности А сAndroid - восстановление активности с onSaveInstanceState null

mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { 
      // Display dialog 
      AlertDialog.Builder builder = new AlertDialog.Builder(TransactionActivity.this); 
      builder.setTitle(null) 
        .setItems(R.array.tran_options_array, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          // The 'which' argument contains the index position 
          // of the selected item 
          switch (which) { 
           case 0: 
            // 
            // View 
            // 
            // Load transaction detail activity 
            Intent intent = new Intent(getApplicationContext(), 
              TransactionDetailActivity.class); 
            Bundle bundle = new Bundle(); 
            Tran transaction = mTransactionList.get(position); 
            bundle.putSerializable("transaction_key", mTransactionList.get(position)); 
            intent.putExtras(bundle); 
            startActivity(intent); 
            break;... 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    outState.putString("type", mType); 
    super.onSaveInstanceState(outState); 
} 

После startActivity (намерения) OnPause() вызывается, а затем onSaveInstanceState(). Нажав на кнопку «Назад» в действии B, вы получите команду onDestroy(), которая вызывается в Activity A, а затем onCreate() с (Bundle savedInstanceState) как null.

+0

Что-то здесь не звучит. Вы уверены, что вы не вручную вызываете финиш в действии? Где-то? –

+0

Да, в классе вообще нет финиша(). – Carl

ответ

0

Вы уверены, что onSaveInstanceState() называется?

Как из documentation for the onSaveInstanceState():

Не следует путать этот метод с жизненным циклом активности обратных вызовов, таких как OnPause(), который всегда вызывается при активности помещаются в фоновом режиме или на пути к разрушению, или onStop(), который вызывается перед разрушением. [...] Пример, когда вызывается onPause(), а не onSaveInstanceState (Bundle), когда активна активность B перед активностью A: система может не вызывать onSaveInstanceState (Bundle) в действии A, если она не была убита во время время жизни B, так как состояние пользовательского интерфейса A останется неизменным.

+0

Да, я отлаживал. Он только начал атаковать onSaveInstanceState(), когда я добавил метод onPause(). – Carl

Смежные вопросы