如何使用Android StudioJava将不同的微调菜单项的EditText值保存到不同的SharedPreferences中

问题描述

我有4个Spinner菜单项,每个项包含2个EditText值,这2个值对于4个不同的Spinner项目是不同的,以及将这2个值保存为SharedPreferences中的4个不同Spinner项目,例如4items X 2Values = 8.但是,当我用不同的EditText值更改2nd Spinner Menu项时,相同的值显示EditText值的1st Spinner Menu项。我给了EditTexts SharedPreferences不同的菜单项键,代码是:

@Override
    public void onItemSelected(AdapterView<?> adapterView,View view,int i,long l) {
        final String spin1 = String.valueOf(spinner1.getSelectedItem());
        TextInputLayout et1= findViewById(R.id.et1);
        TextInputLayout et2= findViewById(R.id.et2);
        if (spin1.contentEquals("Item1")) {
            final SharedPreferences prefs1 = PreferenceManager.getDefaultSharedPreferences(this);
            et1.setText(prefs1.getString("item1Key1","100"));
            et1.addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence s,int start,int before,int count){
                }
                @Override
                public void beforeTextChanged(CharSequence s,int count,int after){
                }
                @Override
                public void afterTextChanged(Editable s){
                    prefs1.edit().putString("item1Key1",s.toString()).commit();
                }
            });
            final SharedPreferences prefs2 = PreferenceManager.getDefaultSharedPreferences(this);
            et2.setText(prefs2.getString("item1Key2","100"));
            et2.addTextChangedListener(new TextWatcher() {
                @Override
                public void onTextChanged(CharSequence s,int after){
                }
                @Override
                public void afterTextChanged(Editable s){
                    prefs2.edit().putString("item1Key2",s.toString()).commit();
                }
            });
        }

if (spin1.contentEquals("Item2")) {
        final SharedPreferences prefs3 = PreferenceManager.getDefaultSharedPreferences(this);
        et1.setText(prefs3.getString("item2Key1","200"));
        et1.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s,int count){
            }
            @Override
            public void beforeTextChanged(CharSequence s,int after){
            }
            @Override
            public void afterTextChanged(Editable s){
                prefs3.edit().putString("item2Key1",s.toString()).commit();
            }
        });
        final SharedPreferences prefs4 = PreferenceManager.getDefaultSharedPreferences(this);
        et2.setText(prefs4.getString("item2Key2","200"));
        et2.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s,int after){
            }
            @Override
            public void afterTextChanged(Editable s){
                prefs4.edit().putString("item2Key2",s.toString()).commit();
            }
        });
    }

if (spin1.contentEquals("Item3")) {
        final SharedPreferences prefs5 = PreferenceManager.getDefaultSharedPreferences(this);
        et1.setText(prefs5.getString("item3Key1","400"));
        et1.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s,int after){
            }
            @Override
            public void afterTextChanged(Editable s){
                prefs5.edit().putString("item3Key1",s.toString()).commit();
            }
        });
        final SharedPreferences prefs6 = PreferenceManager.getDefaultSharedPreferences(this);
        et2.setText(prefs6.getString("item3Key2","400"));
        et2.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s,int after){
            }
            @Override
            public void afterTextChanged(Editable s){
                prefs6.edit().putString("item3Key2",s.toString()).commit();
            }
        });
    }

if (spin1.contentEquals("Item4")) {
        final SharedPreferences prefs7 = PreferenceManager.getDefaultSharedPreferences(this);
        et1.setText(prefs7.getString("item4Key1","800"));
        et1.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s,int after){
            }
            @Override
            public void afterTextChanged(Editable s){
                prefs7.edit().putString("item4Key1",s.toString()).commit();
            }
        });
        final SharedPreferences prefs8 = PreferenceManager.getDefaultSharedPreferences(this);
        et2.setText(prefs8.getString("item4Key2","800"));
        et2.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s,int after){
            }
            @Override
            public void afterTextChanged(Editable s){
                prefs8.edit().putString("item4Key2",s.toString()).commit();
            }
        });
    }

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

但是当使用上面的代码时,我要更改Edittext值而不是为每个菜单项保存的所有菜单项的SharedPreference键都相同。 在此帮助我,在此先谢谢您。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...