在Android应用中记住我

时间:2014-04-08 03:35:15

标签: android checkbox

我的应用程序中有一个复选框,我想知道是否有可能让应用程序记住复选框的最后状态我的意思是当选中复选框并且当应用程序再次打开时关闭应用程序仍然检查是否与未选中相同。

这就是我做到的。

我在OnResume上有这段代码

@Override
     protected void onResume() {
      super.onResume();
     if(checkbox.equals(true)){
                  checkbox.setChecked(true);

              }else{
                  checkbox.setChecked(false); 
              }

     }

这是我的onchecklistener

checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                // TODO Auto-generated method stub
                if(checkbox.isChecked()){
                      checkbox.setChecked(true);
                      publicvar.displayMessage(Login.this, "check", 0);

                  }else{
                      checkbox.setChecked(false); 
                      publicvar.displayMessage(Login.this, "uncheck", 0);
                  }
            }

        });

不幸的是它无法正常工作

5 个答案:

答案 0 :(得分:3)

我同意Ted Hopp。

试试这个:

public void saveCheckBoxState(boolean isChecked){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor editor = prefs.edit();

    editor.putBoolean("key",isChecked);
    editor.commit();
}

saveCheckBoxState(boolean)

中致电onCheckedChanged()

public boolean getCheckBoxState(){
  SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
  return prefs.getBoolean("key", false);
}

在您活动的getCheckBoxState()中致电onResume()

答案 1 :(得分:1)

您应该保留复选框状态。例如,您可以使用SharedPreferences

答案 2 :(得分:1)

您需要将检查状态存储在某种持久存储中。最简单的方法是使用SharedPreferences。您将值存储在监听器中并在onResume中读取。

答案 3 :(得分:0)

     CheckBox stayInCheckBox = (CheckBox) findViewById(R.id.check_remember);
 SharedPreferences sharedpreferences = PreferenceManager  .getDefaultSharedPreferences(getApplicationContext());


// put this code in oncreate method 
public void stayIn()
{
    sharedpreferences = getSharedPreferences("myrem", MODE_PRIVATE);
    String s3 = sharedpreferences.getString("check", "false");

    String name = sharedpreferences.getString("name", null);


    if (s3.equals("true")) {
        stayInCheckBox.setChecked(true);
        editUser.setText(name);
        editPassword.setText(pass);
    } else {
        stayInCheckBox.setChecked(false);
    }
}

// put this code when app is closed

public void setSharedPreference() 
{
    if (stayInCheckBox.isChecked()) {
        String s1 = "true";
        sharedpreferences = getSharedPreferences("myrem", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString("name", editUser.getText().toString());
        editor.putString("check", s1);
        editor.commit();
    } else {
        String s2 = "false";
        sharedpreferences = getSharedPreferences("myrem", MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedpreferences.edit();
        editor.putString("check", s2);
        editor.commit();
    }
}

答案 4 :(得分:0)

将“共享的首选项”用于“记住我”功能,如果选中了复选框,则只需将布尔值设置为true即可。

请参阅下面的“共享首选项”链接:-

Get Android shared preferences value in activity/normal class