2014-01-05 44 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; 
    }