2016-03-26 8 views
0

英語とヒンディー語で表示するテキストが必要ですが、デフォルトでは英語で表示されます。ヒンディー語をクリックしたとき、私はラベル「英語」と「ヒンディー語」Androidロケールの問題

を持つ2つのボタンがあり

、それはヒンディー語で表示されますが、私は英語をクリックすると、テキストが再び英語になっていません。

次は私が行方不明だということです何

Button en_Button,hi_Button; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setLanguage("en"); 

    en_Button = (Button)findViewById(R.id.en_Button); 
    hi_Button = (Button)findViewById(R.id.hi_Button); 

    en_Button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setLanguage("en"); 
     } 
    }); 

    hi_Button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setLanguage("hi"); 
     } 
    }); 
} 

public void setLanguage(String language) 
{ 
    String languageToLoad = language; // your language 
    Locale locale = new Locale(languageToLoad); 
    Locale.setDefault(locale); 
    Configuration config = new Configuration(); 
    config.locale = locale; 
    getBaseContext().getResources().updateConfiguration(config, 
      getBaseContext().getResources().getDisplayMetrics()); 
    this.setContentView(R.layout.activity_main); 
} 

を使用していたコードのですか?

ありがとうございました。

+0

SharedPreferencesを形成し、私が投稿回答を確認しましたか? –

+0

私はHindiをクリックすると、アクティビティを再起動せずにテキストがヒンディー語に変換されるため、混乱します。英語のボタンをクリックすると英語に変換されません。 –

+0

アクティビティの再起動は解決策に過ぎません。 –

答えて

0

これは、エフェクトランタイムにはなりません。アクティビティを言語hiで再度開始する必要があります。あなたはsharedPreferenceに変更したいという

  1. ストア言語の

    簡単な回避策。

  2. 設定後。 startActivity(getIntent());
  3. 「en」を読み込むたびに代わりにその負荷値の

    public String getAppLanguage() { 
        SharedPreferences pref; = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
        return pref.getString(APP_LANG, "en"); 
    } 
    
    public void setAppLanguage(String language) { 
        SharedPreferences pref; = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
        Editor editor = pref.edit(); 
        editor.putString(APP_LANG, language); 
        editor.commit(); 
    }