每次应用程序运行时,Android 菜单只能使用一次

标签 android sharedpreferences

我的 Android 应用遇到了一个奇怪的问题。我的主要 Activity 有一个菜单附加到菜单按钮。问题是,菜单按钮只工作一次。一旦按下,应用程序必须在菜单按钮再次工作之前重新启动。

(清理过的)代码是:

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

偏好 Activity 看起来像

public class PreferencesActivity extends PreferenceActivity {

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

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

        addPreferencesFromResource(R.xml.preferences);
    }

    @Override
    public void onResume() {
        super.onResume();
    }

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

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

我应该如何解决这个问题?

TIA

最佳答案

onCreateOptionsMenu 只调用一次,就在您第一次打开 OptionsMenu 之前。 而是使用 onPrepareOptionsMenu 调用您的 startActivity(new Intent(this, PreferencesActivity.class));
onPrepareOptionsMenu在您每次单击菜单按钮时调用。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    startActivity(new Intent(this, PreferencesActivity.class));
    return super.onPrepareOptionsMenu(menu);
}

关于每次应用程序运行时,Android 菜单只能使用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9581918/

相关文章:

android - 在 Android 中使用 HttpURLConnection 从 url 获取 xml

android - 如何将qt5 qml插件部署到android?

android - 如何检查 Android 是否可以打开已知扩展名的文件

android - 使用 Robolectric 测试 AsyncTaskLoader

Android 商店最近 10 个搜索值

java - 我的数据库应用程序已停止工作且无法打开

android - 无法转换为 java.lang.Long Android SharedPreferences

java - Android 中的共享首选项

android + 共享首选项

android - PreferenceManager.getDefaultSharedPreferences() 与 getPreferences()