2014-01-05 43 views
0

我制作了一个简单的Android应用程序,现在我想添加选择语言的功能。 现在,应用程序根据设备的语言选择文件string.xml(包含在值-it-or-values -fr中)。但是现在,我希望您可以选择语言,而不考虑设备的语言。 我在选项菜单中创建了项目,但我不知道要与语言case关联什么操作。 下面的代码:允许用户通过选项菜单更改语言

public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) { 
     case R.id.about: 
      onCreateDialog(ABOUT_DIALOG_ID); 
      break; 
     case R.id.language: 
      // ... 
      break; 
     case R.id.exit: 
      this.finish(); 
      break; 
    } 
    return true; 
} 

我在网上搜索,但没有找到任何东西。我希望我没有做一个愚蠢的问题。 谢谢!

(对不起,我的英文很差)

回答

0

感谢您的回复。我这样做了,但语言不变..

 public boolean onOptionsItemSelected(MenuItem item) { 
      switch(item.getItemId()) { 
        case R.id.language: 
          onCreateDialogLanguage(LANGUAGE_DIALOG_ID);      
        break; 
        case R.id.about: 
          onCreateDialogAbout(ABOUT_DIALOG_ID); 
          break; 
        case R.id.exit: 
          this.finish(); 
          break; 
      }  
      return true; 
    } 

    protected Dialog onCreateDialogLanguage(int id) { 
     AlertDialog languageDialog; 
     switch(id) {   
       case LANGUAGE_DIALOG_ID: 
        final CharSequence[] items = {"English", "Italian"}; 
        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Select language"); 
        builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 
         switch(item) { 
          case 0: 
          //english 
            Configuration en = new Configuration(getResources().getConfiguration()); 
            en.locale = Locale.ENGLISH; 
            getResources().updateConfiguration(en, getResources().getDisplayMetrics()); 
          break; 
          case 1: 
          //italian 
            Configuration it = new Configuration(getResources().getConfiguration()); 
            it.locale = Locale.ITALIAN; 
            getResources().updateConfiguration(it, getResources().getDisplayMetrics()); 
          break; 
         }       
         } 
        }); 
        languageDialog = builder.create(); 
        languageDialog.show(); 
        break;  
       default: 
        languageDialog = null; 
     } 
     return languageDialog; 
    }