语言改变后如何开始另一项活动?

时间:2015-04-07 03:21:06

标签: android

我想用两种语言显示android应用程序,但我的应用程序不是以用户选择的语言开头。我的默认应用程序语言是“英语”,当用户更改“语言设置”时,我想用“缅甸语”启动应用程序。我该怎么办?

3 个答案:

答案 0 :(得分:0)

据我所知,用户更改了设备语言,并且您希望应用程序遵循该语言

此行将为您提供设备语言,以便您的应用可以在支持的语言之间切换。

Locale.getDefault().getLanguage();

答案 1 :(得分:0)

我没有理解语言设置部分,用户是否可以从应用程序本身更改应用程序语言?

如果否 -

您可以按Locale.getDefault().getLanguage();

找到默认语言

如果是 -

保存用户选择的语言在SharedPreference中,如果用户选择了英语显示英语内容,则使用Burmese。

答案 2 :(得分:0)

试试这个......

  1. 首先编写Local共享首选项类来存储区域设置值。
  2. <强> LocalSharedManager.java

    public class LocalSharedManager {
    
    Context context;
    SharedPreferences sharedPreferences;
    
    public LocalSharedManager(Context context) {
        this.context = context;
        sharedPreferences = context.getSharedPreferences("pref",
                Context.MODE_PRIVATE);
    }
    
    public SharedPreferences getGcmPreferences() {
    
        return sharedPreferences;
    }
    
    public String GetValueFromSharedPrefs(String KeyName) {
        return sharedPreferences.getString(KeyName, "");
    }
    
    public String SaveValueToSharedPrefs(String KeyName, String value) {
        Editor editor = sharedPreferences.edit();
        editor.putString(KeyName, value);
        editor.commit();
        return true;
      }
     }
    
    1. 您的主要活动,
    2. <强> MainActivity.java

        public class MainActivity extends Activity 
       {
        private RadioGroup radioGroup;
        private RadioButton english;
        private RadioButton burmese;
        private LocalSharedManager mgr;
        private Configuration config;
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          mgr = new LocalSharedManager(MainActivity.this);
      
          radioGroup = (RadioGroup) findViewById(R.id.radioChoice);
          english=(RadioButton)findViewById(R.id.radioEnglish);
          burmese=(RadioButton)findViewById(R.id.radioBurmese);
      
          radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
          {
      
           public void onCheckedChanged(RadioGroup group, int checkedId) 
              {
               // do whatever
               if(english.isChecked())
                 {
                   // Do the UI changes for English.
                   Toast.makeText(MainActivity.this,"English", Toast.LENGTH_SHORT).show();
                   ChangeLocale();
                 }
               else if(burmese.isChecked())
                 {
                   // Do the UI changes for Burmese.
                   Toast.makeText(MainActivity.this,"Burmese", Toast.LENGTH_SHORT).show();
                   ChangeLocale();
                 }
            }
       });
      }
      
      
      /**
       * Method that use change locale type to English or Arabic.
       */
      public void ChangeLocale() {
          String lang = mgr.GetValueFromSharedPrefs("App_Locale");
          if (lang.equalsIgnoreCase("")) {
              //default
              changeEnglish();
          } else {
              if (lang.equalsIgnoreCase("MY")) {
                  changeBurmese();
              } else {
                  changeEnglish();
              }
          }
      }
      
      public void changeBurmese() {
          new AsyncTask<Void, Void, Void>() {
      
              @Override
              protected Void doInBackground(Void... params) {
                  String app_locale = "my";
                  Locale locale = new Locale(app_locale);
                  Locale.setDefault(locale);
                  config = new Configuration();
                  config.locale = locale;
                  getResources().updateConfiguration(config,
                          getResources().getDisplayMetrics());
      
                  //save selected locale in preference        
                  mgr.SaveValueToSharedPrefs("App_Locale", app_locale);
      
                  //refresh activity here.
                  Intent i = getActivity().getIntent();
                  startActivity(i);
                  getActivity().finish();
                  return null;
              }
      
          }.execute();
      }
      
      public void changeEnglish() {
          new AsyncTask<Void, Void, Void>() {
      
              @Override
              protected Void doInBackground(Void... params) {
                  String app_locale = "en";
                  Locale locale = new Locale(app_locale);
                  Locale.setDefault(locale);
                  config = new Configuration();
                  config.locale = locale;
                  getResources().updateConfiguration(config,
                          getResources().getDisplayMetrics());
      
                  //save selected locale in preference        
                  mgr.SaveValueToSharedPrefs("App_Locale", app_locale);
      
                  //refresh activity here.
                  Intent i = getActivity().getIntent();
                  startActivity(i);
                  getActivity().finish();
                  return null;
              }
      
          }.execute();
        }
       }
      
      1. 快乐的编码......