Spinner没有获得选定的值

时间:2017-04-07 02:08:38

标签: android

我有2个设置为初始值的微调器。然后我希望用户选择新值。然后我试图获得这些价值观。但是,getSelectedItem()仅返回初始值 - 即使新选择显示在微调器中,也不会保存更改:

    Spinner spinner1 = (Spinner) view.findViewById(R.id.lessonTypeSpinner);
        Spinner weatherConditionS = (Spinner) view.findViewById(R.id.weatherConditionSpinner);
        spinner1.setSelection(hmlessonType.get(lessonType));
        weatherConditionS.setSelection(hmWeatherCondition.get(weatherCondition));
        Button update = (Button) view.findViewById(R.id.updateButton);

        final String lessonTypeCopy = spinner1.getSelectedItem().toString();
        final String weatherConditionCopy = weatherConditionS.getSelectedItem().toString();

        pref = this.getActivity().getSharedPreferences(this.PREF_FILENAME, 0);
        update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences.Editor edit = pref.edit();
                edit.putString("lessonType", lessonTypeCopy);
                edit.putString("weatherCondition", weatherConditionCopy);
                edit.apply();
            }
        });

1 个答案:

答案 0 :(得分:0)

获取onClick()方法中的值。
你应该改变它:

Spinner spinner1 = (Spinner) view.findViewById(R.id.lessonTypeSpinner);
    Spinner weatherConditionS = (Spinner) view.findViewById(R.id.weatherConditionSpinner);
    spinner1.setSelection(hmlessonType.get(lessonType));
    weatherConditionS.setSelection(hmWeatherCondition.get(weatherCondition));
    Button update = (Button) view.findViewById(R.id.updateButton);

    pref = this.getActivity().getSharedPreferences(this.PREF_FILENAME, 0);
    update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String lessonTypeCopy = spinner1.getSelectedItem().toString();
            final String weatherConditionCopy = weatherConditionS.getSelectedItem().toString();
            SharedPreferences.Editor edit = pref.edit();
            edit.putString("lessonType", lessonTypeCopy);
            edit.putString("weatherCondition", weatherConditionCopy);
            edit.apply();
        }
    });