2016-09-12 15 views
3

メニューバーのボタンを押して言語を変更しようとしていますが、ノルウェー語と英語の切り替えが必要です。したがって、locale.toString()が "no"の場合、私は "en"に切り替え、その逆も同様です。ボタンで言語を変更するにはどうすればよいですか?

私の問題は、一度切り替えるだけで、ボタンを押すと元に戻ってこないということです。

これを使用する方法である:これは、それがどのように見えるかです

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.Language: 
      TextView textview = (TextView) findViewById(R.id.resultat); 
      locale = getResources().getConfiguration().locale; 
      switch(locale.toString()){ 
       case LOCALE_NORWEGIAN: 
        textview.append("EN ACTIVATION"); 
        locale = new Locale("en"); 
        break; 
       case LOCALE_ENGLISH: 
        textview.append("NOR ACTIVATION"); 
        locale = new Locale("nor"); 
        break; 
       default: 
        textview.append("DEFAULT "+locale.toString()); 

      } 
      Resources res = this.getResources(); 
      DisplayMetrics dm = res.getDisplayMetrics(); 
      Configuration conf = res.getConfiguration(); 
      conf.setLocale(locale); 
      res.updateConfiguration(conf,dm); 
      startActivity(new Intent(this,Game.class)); 
      finish(); 
      return true; 
     case R.id.Rules: 



      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 

} 

、私はそれにFLAGGでボタンを押したときに言語を変更したいです。しかし、複数回押すと、言語は変更されません。 enter image description here

+0

locale = new Locale( "en")は変数のロケールのみを設定し、リソースのデフォルトロケールでチェックしているので、この行を書く必要があると思います。Locale.setDefault(locale);ロケールで値を設定した後 – Vickyexpert

+0

しかし、conf.setLocale(ロケール)には、ロケールを引数として使用しています –

+0

使用例の例を示してください。あなたのアプリで実行する正確な手順と結果は何ですか?説明するスクリーンショットを含めてください。 –

答えて

0

完全に切り替え可能なアクティビティについては、GitHub Gistを参照してください。ここでは抜粋です。

Intent intent = getIntent(); 

if (locale == null) { 
    Locale def = Locale.getDefault(); 
    Log.i(LOG_TAG + ".useLocale", "restarting the activity" + 
            " in the default locale " + def); 
    intent.putExtra(LOCALE_EXTRA, def); 
} else { 
    Log.i(LOG_TAG + ".useLocale", "restarting the activity in" + 
            " the " + locale + " locale"); 
    intent.putExtra(LOCALE_EXTRA, locale); 
} 

restartingForLocaleChangeFlag = true; 
overridePendingTransition(0, 0); 
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
finish(); 
overridePendingTransition(0, 0); 
startActivity(intent); 
0

は私が望んでいたものを与えるものではありませんlocale.toString()との比較のように思えるが、私は「いいえ」

を「EN」私を与えなかったとlocale.getLanguage()に切り替え
関連する問題