0

私は先週からこれをすべて試しています。スピナー アクティビティの言語を変更しようとしました。言語を変更することはできますが、言語を変更すると MainActivity が更新され続けます。私のポイントは、refresh() 関数に問題があります。ポインタまたは私が間違っていることです。ここに私の関数があります:-

public boolean onNavigationItemSelected(int position, long id) {
 if(position == 0){
            setLocale("fr");              
              Toast.makeText(MainActivity.this, "Locale in French !", Toast.LENGTH_LONG).show();  
          }
          if(position == 1){
              setLocale("es");
              Toast.makeText(MainActivity.this, "Locale in Spain !", Toast.LENGTH_LONG).show();  
          }
          if(position == 2){
              setLocale("en");
              Toast.makeText(MainActivity.this, "Locale in English !", Toast.LENGTH_LONG).show();  
          }
          return true;

}

public void setLocale(String localeCode){
        Locale locale = new Locale(localeCode);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
        refresh();
        //Toast.makeText(getApplicationContext(),Locale.getDefault().getDisplayLanguage(),Toast.LENGTH_LONG).show();  

    }

  private void refresh() {
      finish();
       //setContentView(R.layout.activity_main);
      Intent myIntent = new Intent(this, MainActivity.class);

     // Intent myIntent = new Intent(this, OpertingSystemFragment.class);
      startActivity(myIntent);
  }
4

2 に答える 2

0

何を達成しようとしているのか、何を見ているのか? コードから、現在のアクティビティを終了してから MainActivity を開始することがわかります。このコードはアクティビティを終了し、再び起動する必要があります。

Intent intent = getIntent();
finish();
startActivity(intent);
于 2013-09-10T00:18:32.487 に答える