持久存储中的BlackBerry保存复选框状态

时间:2012-08-29 10:27:58

标签: blackberry savestate persistent-object-store

我有一个登录页面(用户名,密码字段),其中有一个复选框“记住我”。如果选中该复选框,则应用程序需要记住用户名&下次登录的密码。这样做并且工作正常。但是我发现很难保存复选框字段的状态,即是否检查它。我通过以下代码保存用户名/密码:

if (persistentObject.getContents() == null)
{
    persistentHashtable = new Hashtable();
    persistentObject.setContents(persistentHashtable);
} else {
    persistentHashtable = (Hashtable) persistentObject.getContents();
}

if (persistentHashtable.containsKey("username") && persistentHashtable.containsKey("password"))
{
    username.setText((String) persistentHashtable.get("username"));
    passwd.setText((String) persistentHashtable.get("password"));
}   

如果选中该复选框并且登录成功,则通过以下方式保存用户名和密码:

if(checkBox1.getChecked() == true)
{
    persistentHashtable.put("username", user_id);
    persistentHashtable.put("password", password);
}

我尝试使用下面的行保存复选框状态,但这是不正确的。

persistentHashtable.put("checkbox", checkBox1.setChecked(true));

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

RIM rapc.exe编译器不支持自动装箱(它在java 1.3兼容模式下工作),然后您需要将布尔值包装到Boolean类实例,然后将其保存在哈希表中或将其传递给持久存储。

答案 1 :(得分:0)

嘿伙计们,我设法找到解决问题的方法。我通过检查用户名字段是否为空来解决,然后复选框状态应该是“未选中”,否则应该“检查”。这就是我想要的。如果你们中有人有更好的方法,请建议。我的工作代码如下:

if(username.getText().length()==0)
                {
                    checkBox1 = new CheckboxField("Remember me",false);
                }
                else
                {
                    checkBox1 = new CheckboxField("Remember me",true);
                }

false =未选中,true =已检查

答案 2 :(得分:0)

复选框用于用户愿望,根据您的代码,如果用户已输入用户名复选框将被选中。 您的代码有点复杂,首先,您需要在设置哈希表后将内容代码设置为持久性。您有一个登录屏幕,因此您必须有一个提交按钮。 在提交按钮事件中这样做:

// to set persistent values
if(checkBox1.getChecked() == true)
{
 persistentHashtable = new Hashtable();
 persistentHashtable.put("username", user_id);
 persistentHashtable.put("password", password);
 persistentHashtable.put("checkbox", "true");
 persistentObject.setContents(persistentHashtable);
 persistentObject.commit() ;
}

// to get from  persistent values
if (persistentObject.getContents() != null) 
{
 persistentHashtable = (Hashtable) persistentObject.getContents();
 username.setText((String) persistentHashtable.get("username"));
 passwd.setText((String) persistentHashtable.get("password"));
 String boolval = (String) persistentHashtable.get("checkbox"); 
 if(boolval.equals("true"))
    checkBox1 = new CheckboxField("Remember me",true);
 else
    checkBox1 = new CheckboxField("Remember me",false);
}