如何更改选项菜单的语言?

时间:2012-06-15 10:47:12

标签: android menu

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

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;

}

1 个答案:

答案 0 :(得分:0)

最好将菜单标题字符串放在值string.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>

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

Change language programmatically in Android