【问题标题】:Android: Saving Preferences with multiple editTextsAndroid:使用多个editTexts保存首选项
【发布时间】:2017-06-05 20:40:41
【问题描述】:

我正在尝试保存用户在 3 个 editText 字段(editText1、editText2、editText3)中输入的值,以便它们在应用重新启动后显示在正确的字段中。 问题:重启后只有editText3的最后一个值被保存到3个字段中。 什么是解决方法,以便保存和重新加载特定字段的值?

【问题讨论】:

标签: java android sharedpreferences preferences


【解决方案1】:

您需要为每个保存的文本使用不同的密钥:

savePreferences("storedName", editText1.getText().toString());
savePreferences("storedName2", editText2.getText().toString());
savePreferences("storedName3", editText3.getText().toString());

然后,检索每个文本

private void loadSavedPreferences() {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    editText1.setText(sharedPreferences.getString("storedName", "YourName"));
    editText2.setText(sharedPreferences.getString("storedName2", "YourName"));
    editText3.setText(sharedPreferences.getString("storedName3", "YourName"));
}

要小心,因为 getString 中的第二个参数(“YourName”)是默认值,以防您没有使用指定的键参数保存任何文本。

【讨论】:

    【解决方案2】:

    解决了!

    public class MainActivity extends AppCompatActivity {
    int sum = 0;
    int ects = 0;
    float mark = 0;
    NumberFormat numberFormat = new DecimalFormat("0.00");
    Button button1;
    TextView textView1;
    EditText editText1;
    EditText editText2;
    EditText editText3;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1 = (Button)findViewById(R.id.button1);
        textView1 = (TextView)findViewById(R.id.textView1);
        editText1 = (EditText)findViewById(R.id.editTextGDI);
        editText2 = (EditText)findViewById(R.id.editTextGDW);
        editText3 = (EditText)findViewById(R.id.editTextProgrammieren1);
        loadSavedPreferences();
    
        button1.setOnClickListener(
                new Button.OnClickListener() {
                    public void onClick(View v){
    
                        ViewGroup group = (ViewGroup)findViewById(R.id.activity_main);
                        for (int i = 0, count = group.getChildCount(); i < count; ++i) {
                            View view = group.getChildAt(i);
                            if (view instanceof EditText) {
                                if(view.equals(editText1) && !(editText1.getText().toString().matches(""))){ //GDI
                                    System.out.println("edittext1");
                                    ects += 5;
                                    try{ sum += Integer.parseInt(editText1.getText().toString()) *5; } catch(NumberFormatException n){}
                                }
                                else if(view.equals(editText2)&& !(editText2.getText().toString().matches(""))){ //GDW
                                    System.out.println("edittext2");
                                    ects += 5;
                                    try{ sum += Integer.parseInt(editText2.getText().toString()) *5; } catch(NumberFormatException n){}
                                }
                                else if(view.equals(editText3)&& !(editText3.getText().toString().matches(""))){
                                    System.out.println("edittext3");
                                    ects += 7;
                                    try{ sum += Integer.parseInt(editText3.getText().toString()) *7; } catch(NumberFormatException n){}
                                }
                            }
                        }
    
                        mark = (float)sum / (float)ects;
                        textView1.setText(String.valueOf(numberFormat.format(mark)));
                        savePreferences("1", editText1.getText().toString());
                        savePreferences("2", editText2.getText().toString());
                        savePreferences("3", editText3.getText().toString());
    
                        sum = 0;
                        ects = 0;
                        mark = 0;
                    }
                }
        );
    }
    
    private void loadSavedPreferences() {
        SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(this);
        editText1.setText(sharedPreferences.getString("1", "YourName"));
        editText2.setText(sharedPreferences.getString("2", "YourName"));
        editText3.setText(sharedPreferences.getString("3", "YourName"));
    }
    
    private void savePreferences(String key, String value) {
        SharedPreferences sharedPreferences = PreferenceManager
                .getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.commit();
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 2013-04-09
      • 1970-01-01
      • 2014-05-03
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2015-05-03
      相关资源
      最近更新 更多