首页 > 解决方案 > 语言更改按钮

问题描述

我将代码放在设置片段中,但是在我选择语言后它不会更改语言,尽管我有那个语言字符串文件夹。我相信我需要刷新活动,但这是片段,我不知道该怎么做。

public class Settings extends Fragment {
    Locale myLocale;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_settings, container, false);

        String [] values =
                {"Please Select Language","Myanmar","English",};
        Spinner spinner = (Spinner) v.findViewById(R.id.spinner1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values);
        adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener () {

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

                if (pos == 1) {

                    Toast.makeText(parent.getContext(),
                            "You have selected Myanmar", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("my");
                } else if (pos == 2) {

                    Toast.makeText(parent.getContext(),
                            "You have selected English", Toast.LENGTH_SHORT)
                            .show();
                    setLocale("en");
                }

            }

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

        });

        return v;

    }

    public void setLocale(String lang) {

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

标签: android

解决方案


FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction();
    t.setReorderingAllowed (false);
    t.detach(this).attach(this).commitAllowingStateLoss();

推荐阅读