2015-01-15 4 views
2

согласно OnCreate документации:отделки() внутри OnCreate() недействительные обратные вызовы

Вы можете назвать отделку() внутри этой функции, в этом случае OnDestroy() будет немедленно вызваны без какого-либо из остальные жизненного цикла (onStart(), onResume(), onPause() и т. д.).

Но они сталкиваются с другим поведением. onCreateOptionsMenu будет вызван после onCreate и только после этого onDestroy. Какие-либо предложения?

Код им Runing:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if (...) { 
      startActivity(...); 
      finish(); 
      return; 
     } 
} 
+0

как вы называете 'finish()'? Используете ли вы (неявный) указатель 'this' для экземпляра активности или пытаетесь вызывать функцию finish() для активности, которая в настоящее время не находится перед текущей задачей? – NitroNbg

+0

обновил мой вопрос –

+0

Я нашел эту цитату только здесь. http://developer.android.com/reference/android/preference/PreferenceActivity.html Вы упомянули «PreferenceActivity»? Вы пробовали свой код с помощью «PreferenceActivity» или с нормальной «Activity»? – Anatol

ответ

3

Метод onCreateOptionsMenu() официально не относится к методам жизненного цикла. Может быть, поэтому его зовут. Если это проблема для вас, вы можете просто добавить чек и немедленно выйти из него.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (isFinishing()) { 
     return false; 
    } 
    ... 
} 

Код внутри onCreate() абсолютно справедлива.

+0

Thats, что я в конце концов сделал, но я хотел убедиться, что это нормальное поведение. Благодарю. –

+0

Ditto для 'onNewIntent' похоже. –

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