3

我想更改选项菜单的语言。此代码适用于我的所有活动,菜单除外。

public boolean onOptionsItemSelected(MenuItem item) {

    switch(item.getItemId()){
        case R.id.ingles:
            mLocale = new Locale("en");
            Locale.setDefault(mLocale); 
            config = getBaseContext().getResources().getConfiguration(); 
            if (!config.locale.equals(mLocale)) { 
                config.locale = mLocale; 
                getBaseContext().getResources().updateConfiguration(config, null); 
            }
            setContentView(R.layout.main);
            break;

        case R.id.euskera:
            mLocale = new Locale("eu");
            Locale.setDefault(mLocale); 
            config = getBaseContext().getResources().getConfiguration(); 
            if (!config.locale.equals(mLocale)) { 
                config.locale = mLocale; 
                getBaseContext().getResources().updateConfiguration(config, null); 
            }
            setContentView(R.layout.main);
            break;
    }
    return super.onOptionsItemSelected(item);
}

为什么?我尝试使用 onPrepareOptionsMenu 但它创建了额外的菜单

public boolean onPrepareOptionsMenu(Menu menu) {

    if(config.equals(this.getBaseContext().getResources().getConfiguration())){
        MenuInflater inflater = this.getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }
    return false;

}
4

1 回答 1

0

最好将菜单标题字符串放在 Valuesstring.xml中并menu.xml从那里设置

喜欢

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/new_game"

          android:title="@string/new_game"
          />

</menu>

如果您想在运行时更改它,请参阅此

在 Android 中以编程方式更改语言

于 2012-06-15T10:49:18.307 回答