2012-03-21 81 views
0

我已经实现了一个应用程序来保存android内容视图的属性。如何保存android控件的属性?

我已经使用复选框启用和禁用editText.When用户检查复选框,然后我启用编辑文本视图,当用户取消选中复选框,然后禁用编辑text.Here如果用户选中复选框然后编辑文本视图将启用输入数据,然后用户点击保存按钮,然后在编辑栏propertie为实现将保存,如果用户重新午餐应用

我已经为它实现的代码如下:

((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 


     } 
    }); 

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

请任何机构帮助我....

回答

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)); 
} 
+0

感谢您的答案,但我可以实现在按钮的事件上面的代码? – 2012-03-21 09:44:35

+0

这些方法(onSaveInstanceState,onRestoreInstanceState)将在您的活动被创建之前以及在它被杀死之前被调用。所以实际上你不必在按钮事件中实现这个功能。如果您想在按下按钮时保存信息,则可以使用sharedPreferences。你可以在我的回答中找到一个链接,上面的 – 2012-03-21 10:00:09

+0

添加一些编辑。 – 2012-03-21 10:01:24

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(); 
+0

如何申请时点击保存按钮。请给予一些解释 – 2012-03-21 10:01:15

+0

我为sharedPreferences添加了一个代码示例。 @appserv和这个例子应该足以让你运行它。 – 2012-03-21 10:12:14