微调器选择 - 区域设置更改 - 保留选定的值

时间:2014-08-25 07:26:58

标签: android localization android-spinner

问题是我想在用户更改微调器的选择时刷新我的活动 我有3种语言英语 - 西班牙语 - 法语。 选择其中一个时,活动应将布局更改为所选语言布局 。 我有旋转器和textView显示消息。

下一个代码不能与我合作重启活动,但后面的语言不是wt用户选择默认值并重复重新启动应用程序:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from activity_main.xml
    setContentView(R.layout.activity_main);

    textview = (TextView) findViewById(R.id.text);

    cnt=this;
    spin=(Spinner) findViewById(R.id.language_spinner_login);
     ArrayAdapter<CharSequence> languageAdapter = ArrayAdapter
                .createFromResource(cnt,
                        R.array.lang,
                        android.R.layout.simple_spinner_item);
        spin.setAdapter(languageAdapter);
          spin.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> parent, View view,
                        int pos, long id) {

                    if (pos == 0) {

                       setLocale("fr");
                    } else if (pos == 1) {


                        setLocale("en");
                    } 
     else if (pos == 2) {

                        setLocale("sp");
                    } 

                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub
                }

            });

          textview.setText(string.hello_world);
        }

public void setLocale(String lang) {

       Locale myLocale = new Locale(lang);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        res.updateConfiguration(conf, dm);
        Intent refresh =new Intent(cnt, MainActivity.class);
        startActivity(refresh);
    }

2秒Q我想在下次用户打开应用程序时将所选项目保存到微调器中,微调器选择的项目应该是用户上次选择的重量。

1 个答案:

答案 0 :(得分:0)

保持选定的区域设置优先

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
p.edit().putString("selected_locale", locale).commit();

并在需要再次设置时获取

String locale = p.getString("selected_locale", "");

每次都不要调用setLocale()方法。因为当你尝试设置微调器时,将再次调用setLocale。这是你的问题吗?

修改:

试试这个。 http://snowpard-android.blogspot.in/2013/03/programmatically-change-language-in.html

根据您的需要进行修改:)