0

ボタンのクリックでトリガーされる言語の変更を実装する方法を探しています。適切なフォルダーに適切なstrings.xmlを作成しました(たとえば、res/values-en/)ボタンのコードは次のとおりです。

Button setEN_bt = (Button) findViewById(R.id.setEN);        
setEN_bt.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Locale locale_en = new Locale("en"); 
            Locale.setDefault(locale_en);
            Configuration config_en = new Configuration();
            config_en.locale = locale_en;
            getBaseContext().getResources().updateConfiguration(config_en, getBaseContext().getResources().getDisplayMetrics());
        }
    });

したがって、基本的には onclick でロケールを変更しますが、ページはその後更新されません (なぜそうすべきか...:) )。アクティビティを更新/リロードする方法を教えてもらえますか?

事前に助けてくれてありがとう。

4

4 に答える 4

1

あなたは電話をかけることができます

view.invalidate();

自分自身を再描画したいビューで。

これでロケールがリロードされるかどうかはわかりません。そうでない場合は、それ自体の新しいインテントを作成して、アクティビティを再開できます。

Intent intent = new Intent(this, Activity.class);
startActivity(intent);

乾杯

于 2012-10-30T13:36:17.797 に答える
1

startActivity() を呼び出してから finish() を呼び出す代わりに、次のように呼び出すことができます。

recreate(); // which is available from API Level 11.

私はこの答えを見つけましたここには、より低いAPIレベルでそれを行う別の優れた方法があります: Androidアクティビティを再起動するにはどうすればよいですか

于 2014-09-14T13:56:42.277 に答える
1

を使用してアクティビティを開始できます

startActivity(new Intent(CurrentActivity.this, CurrentActivity.class)); 終了(); onclick メソッドの最後に finish() メソッドを使用して、前のアクティビティを終了します。

于 2012-10-30T14:01:27.790 に答える