android - 再次返回同一页面后,微调器的选定值未显示在 TextView 中

标签 android spinner preferences shared

我遇到的问题是 TextView 没有保留从微调器值列表中选择的值。导航到同一页面后,它只是继续返回到相同的值,而不是用户选择的值。 这是我写的代码。谢谢。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_notifications);

    final Switch mySwitch = (Switch) findViewById(R.id.switchNot);
    final Spinner mySpin = (Spinner) findViewById(R.id.spinNot);
    final TextView tvNot = (TextView) findViewById(R.id.tvTime);

    mySwitch.setOnClickListener(new View.OnClickListener() {
        SharedPreferences.Editor editor = getSharedPreferences("mapp.com.sg.sadtrial", MODE_PRIVATE).edit();
        @Override
        public void onClick(View v) {

            if (mySwitch.isChecked()) {

                editor.putBoolean("Switch", true);
                editor.commit();
                editor.putBoolean("Spinner",true);
                editor.commit();
                mySpin.setEnabled(true);

            } else {

                editor.putBoolean("Switch", false);
                editor.commit();
                editor.putBoolean("Spinner",false);
                editor.commit();
                mySpin.setEnabled(false);
            }
        }
    });

  final SharedPreferences sharedPrefs = 
  getSharedPreferences("mapp.com.sg.sadtrial", MODE_PRIVATE);
  mySwitch.setChecked(sharedPrefs.getBoolean("Switch", false));
  mySpin.setEnabled(sharedPrefs.getBoolean("Spinner",false));

        mySpin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            SharedPreferences.Editor editor = getSharedPreferences("mapp.com.sg.sadtrial", MODE_PRIVATE).edit();
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                switch(position){
                    case 0:
                        tvNot.setText(mySpin.getSelectedItem().toString());
                        editor.putString("Option", mySpin.getSelectedItem().toString());
                        editor.commit();
                        break;
                    case 1:
                        tvNot.setText(mySpin.getSelectedItem().toString());
                        editor.putString("Option", mySpin.getSelectedItem().toString());
                        editor.commit();
                        break;
                    case 2:
                        tvNot.setText(mySpin.getSelectedItem().toString());
                        editor.putString("Option", mySpin.getSelectedItem().toString());
                        editor.commit();
                        break;
                    case 3:
                        tvNot.setText(mySpin.getSelectedItem().toString());
                        editor.putString("Option", mySpin.getSelectedItem().toString());
                        editor.commit();
                        break;
                }

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

        });

              tvNot.setText(sharedPrefs.getString("Option", mySpin.getSelectedItem().toString()));

}

enter image description here enter image description here

左图是用户从微调器中选择后在 TextView 中显示的值。

右图显示的是textview中的值恢复为默认值,并且不保留用户的选择

最佳答案

您正在尝试在 textView 中进行设置,但每次您来时它都会尝试在微调器中设置默认值 0,因此我们应该获取该值,并且可以尝试如下设置

而不是下面的行

tvNot.setText(sharedPrefs.getString("Option", mySpin.getSelectedItem().toString()));

像这样改变。

String selectedValue = sharedPrefs.getString("Option", 
mySpin.getSelectedItem().toString());

if (!TextUtils.isEmpty(selectedValue)) {
    for (int i = 0; i < mySpin.getAdapter().getCount(); i++) {
        String value = (String) mySpin.getAdapter().getItem(i);

        if (selectedValue.equalsIgnoreCase(value)) {
            mySpin.setSelection(i);
            break;
        }
    }
}

关于android - 再次返回同一页面后,微调器的选定值未显示在 TextView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657426/

相关文章:

Android微调器没有触发onItemSelected

android - 将共享操作添加到首选项屏幕

android - 使用 ActionBar Sherlock 的首选项屏幕

android - 为什么要为GRADLE(Android Studio)设置环境变量?

java - Android - 旋转树

android - MonoDroid 下载图像到 ImageView

android - 从微调器获取文本

python - 如何在 Python 中存储变量/首选项以备后用

android-actionbar - 带选项卡的 Activity 对话框

javascript - 我无法在 phonegap 中连接多个页面