Меню Android работает только один раз за запуск приложения - PullRequest
4 голосов
/ 06 марта 2012

У меня странная проблема с моим приложением для Android.Мое основное занятие имеет меню, прикрепленное к кнопке меню.Проблема в том, что кнопка меню работает ровно один раз.После нажатия приложение необходимо перезапустить, прежде чем кнопка меню снова заработает.

(Дезинфицированный) код:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.main);

    settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    startActivity(new Intent(this, PreferencesActivity.class));

    return(super.onCreateOptionsMenu(menu));
}

@Override
public void onBackPressed() {
    this.finish();
}

@Override
public void onDestroy() {
    super.onDestroy();
    this.finish();
}

@Override
public void onStop() {
    super.onStop();
    this.finish();
}

, а действие по настройкам выглядит как

* 1007.*

Есть идеи, как мне решить эту проблему?

TIA

Ответы [ 3 ]

5 голосов
/ 06 марта 2012

onCreateOptionsMenu вызывается только один раз, прямо перед тем, как вы впервые откроете меню параметров. Вместо этого используйте onPrepareOptionsMenu для вызова вашего startActivity(new Intent(this, PreferencesActivity.class));
onPrepareOptionsMenu вызывается при каждом нажатии кнопки меню.

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    startActivity(new Intent(this, PreferencesActivity.class));
    return super.onPrepareOptionsMenu(menu);
}
1 голос
/ 06 марта 2012

Проблема в том, что вы запускаете Activity вместо отображения меню. Обычным способом было бы надувать меню внутри меню параметров onCreate и иметь в этом меню пункт настроек, который при нажатии отображает действие предпочтения.

Томми прав. Если вы хотите сразу запустить предпочтительное действие (имейте в виду, что это необычное поведение для приложения для Android), вы можете сделать это в onPrepareOptionsMenu. В обычном потоке меню создается один раз в обратном вызове onCreateOptionsMenu и после этого используется повторно.

0 голосов
/ 06 марта 2012

После нажатия на кнопку меню вы переходите к PreferencesActivity и всякий раз, когда вы щелкаете обратно туда ... первое действие закрывается из-за метода onBackPressed.

Можете ли вы сказать мне, что именно выищу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...