如何保存android控件的属性?

时间:2012-03-21 09:28:02

标签: android properties save

我已经实现了一个用于保存android内容视图属性的应用程序。

我使用复选框启用并禁用editText。当用户选中复选框时,我启用编辑文本视图,当用户取消选中复选框,然后禁用编辑文本。如果用户选中复选框,则编辑文本视图将启用输入数据然后用户单击保存按钮然后编辑字段属性为启用将保存,如果用户午餐应用程序

我已按如下方式实现了代码:

 ((EditText)findViewById(R.id.editText1)).setEnabled(false);

    ((CheckBox)findViewById(R.id.checkBox1)).setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
            ((EditText)findViewById(R.id.editText1)).setEnabled(true);
            }
            else{
                ((EditText)findViewById(R.id.editText1)).setEnabled(false);
            }
        }
    });

    ((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            //here how to save the properties of editText1 and checkBox1 upto re-launch


        }
    });

如果用户重新打开应用程序,则仅显示修改后的内容。

请任何人帮助我......

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

@Override
protected void onSaveInstanceState(Bundle outState) {
    outState.putBoolean("editTextState", editText.isEnabled());
    outState.putBoolean("checkBoxState", checkBox.isEnabled());
    super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    if (savedInstanceState != null) {
        editText.setEnabled(savedInstanceState.getBoolean("editTextState"));
        checkBox.setEnabled(savedInstanceState.getBoolean("checkBoxState"));
    }
}

或者您可以使用SharredPreferences。

在您的活动中:

private EditText editText;
private CheckBox checkBox;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    editText = (EditText) findViewById(R.id.editText1);
    checkBox = (CheckBox) findViewById(R.id.checkBox1);
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                editText.setEnabled(true);
            } else {
                editText.setEnabled(false);
            }
        }
    });

    loadProperties();

    Button button = (Button)findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            saveProperties();
        }
    });

}

private void saveProperties() {
    SharedPreferences.Editor editor = getSharedPreferences("PREFS_KEY", Context.MODE_PRIVATE).edit();
    editor.putBoolean("CHECK_BOX_STATE", checkBox.isChecked());
    editor.putBoolean("EDITEXT_STATE_STATE", editText.isEnabled());
    editor.commit();

}

private void loadProperties() {
    SharedPreferences prefs = getSharedPreferences("PREFS_KEY", Context.MODE_PRIVATE);
    checkBox.setChecked( prefs.getBoolean("CHECK_BOX_STATE", false));
    editText.setEnabled( prefs.getBoolean("EDITEXT_STATE_STATE", false));
}

答案 1 :(得分:0)

您需要使用的是:onSaveInstanceState(android.os.Bundle)

此方法可以保存控件的所有信息。

另一种可能性是使用SharedPreferences

    SharedPreferences settings = this.context.getSharedPreferences("myPreferences", 0);
    // read stored value
    String storedValue = settings.getString("aKey", null);

    // store/override value
    SharedPreferences.Editor editor = settings.edit();
    editor.putString("aKey", "aValue");
    editor.commit();