未选择Spinner值

时间:2015-12-21 10:09:27

标签: android android-spinner

我有非常简单的spinnser,其中我显示两个值1 =>英语2 =>希伯来语

我重新启动整个活动(更改用户界面)从微调器中选择任何值,但问题是我的活动只是重启案例1,请帮我解决问题。

以下是我正在使用的代码

languageSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                if (!isFistLaunch) {

                    String email = mEmailEditText.getText().toString();
                    String pass = mPasswordEditText.getText().toString();
                    Intent intent = new Intent(MainActivity.this, MainActivity.class);
                    intent.putExtra("typed_email", email);
                    intent.putExtra("typed_pass", pass);
                    mUserSession.setUserLanguage(lang[position]);
                    Toast.makeText(MainActivity.this, "Spinner position = " + position, Toast.LENGTH_SHORT).show();
                    startActivity(intent);
                    MainActivity.this.finish();

                } else {
                    isFistLaunch = false;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

我也在旁边举杯,但它只显示了一次......

Spinner正如我想要的那样工作但仅限于我的设备。所有其他设备都没有为希伯来语显示任何祝酒词。他们只为英语显示Toast。

谁能告诉我这里有什么问题?感谢

1 个答案:

答案 0 :(得分:0)

为了切换您应用的语言,我建议您参考以下代码:

    protected static void setLocale(Context context, String language) {
        // if not exist, set EN as default
        Locale locale = new Locale(language);
        final Locale[] availableLocales=Locale.getAvailableLocales();
        if (!(Arrays.asList(availableLocales).contains(locale))) {
            locale = new Locale("en");
        }
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        ((Activity) context).getBaseContext().getResources().updateConfiguration(config,
                ((Activity) context).getBaseContext().getResources().getDisplayMetrics());

        // refresh activity to reload resources
        Intent refresh = ((Activity) context).getIntent();
        ((Activity) context).overridePendingTransition(0, 0);
        refresh.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        ((Activity) context).finish();
        ((Activity) context).overridePendingTransition(0, 0);
        context.startActivity(refresh);
    }

    protected static void switchLocale(Context context) {
        Locale current = context.getResources().getConfiguration().locale;
        if (current.getLanguage().equals("he")){
            setLocale(context, "en");
        } else {
            setLocale(context, "he");
        }
    }

然后,在onClick的{​​{1}}内或Button的{​​{1}} ...内,您可以拨打onItemSelected

P / S:英语资源将存储在Spinner,希伯来语资源将存储在switchLocale(mContext);

您可以在Google's Doc - Supporting Different Languages了解更多信息。

希望这有帮助!