【问题标题】:Multiple Checkbox save Android Eclipse多个复选框保存Android Eclipse
【发布时间】:2013-11-28 20:07:02
【问题描述】:

我还没有通过保存按钮保存我的文本值和复选框值。现在我想创建 2 个(或更多)复选框,但是使用当前代码,它只保存一个,而不是其余的......这一定是我必须做的一个小改动,但我似乎找不到它.. .

import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;

public class MainCamperTime extends Activity implements OnClickListener {

CheckBox checkBox;
EditText editText;
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_camper_time);

    checkBox = (CheckBox) findViewById(R.id.checkBox1);
    editText = (EditText) findViewById(R.id.editText1);
    button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(this);
    loadSavedPreferences();
}

private void loadSavedPreferences() {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    boolean checkBoxValue = sharedPreferences.getBoolean("CheckBox_Value", false);
    String name = sharedPreferences.getString("storedName", "Wanneer vertrekken?");
    if (checkBoxValue) {
        checkBox.setChecked(true);
    } else {
        checkBox.setChecked(false);
    }

    editText.setText(name);
}

private void savePreferences(String key, boolean value) {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putBoolean(key, value);
    editor.commit();
}

private void savePreferences(String key, String value) {
    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    savePreferences("CheckBox_Value", checkBox.isChecked());
    if (checkBox.isChecked())
        savePreferences("storedName", editText.getText().toString());

    finish();
}

}

【问题讨论】:

    标签: android eclipse checkbox


    【解决方案1】:

    您对不同的复选框使用相同的键。

    替换下面的onClick()方法:

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        savePreferences(((CheckBox)findViewById(v.getId())).getText(), checkBox.isChecked());
        if (checkBox.isChecked())
            savePreferences("storedName", editText.getText().toString());
    
        finish();
    }
    

    当您从 sharePreference 中检索复选框值时,您需要将复选框的文本作为键传递给 sharePreference,如下所示:

    boolean checkBoxValue = sharedPreferences.getBoolean(checkBox.getText(), false); 
    

    【讨论】:

    • tnx 快速回复。如果我进行这些更改,则 (((CheckBox)v.getId()) 会加下划线,并且错误消息告诉我:不能将 int 转换为复选框?
    • 好的,添加了,不再给我错误...但是程序在测试时停止。我想我应该将此字符串中的某些内容更改为: checkBox = (CheckBox) findViewById(R.id.checkBox1); ?此外,您的解决方案中的 safepreferences 给了我错误,但我以添加此的方式解决了:private void savePreferences(CharSequence text, boolean checked) { // TODO Auto-generated method stub }。也许我做的有些不对劲……
    【解决方案2】:

    您应该尝试使用 CheckChangedListner 复选框,如下所示:

    checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                if (isChecked) {
                savePreferences("CheckBox_Value", true);
                              savePreferences("storedName", editText.getText().toString());
                } else {
                savePreferences("CheckBox_Value", true);
                }
            }
        });
    

    第二个复选框也是如此。

    【讨论】:

      猜你喜欢
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2014-05-03
      • 2017-10-25
      相关资源
      最近更新 更多