2012-08-29 173 views
0

我有一個登錄頁面(用戶名,密碼字段),其中有一個複選框'記住我'。如果選中該複選框,則應用程序需要記住用戶名&密碼才能進行下次登錄。這樣做並且工作正常。但是,我發現很難保存複選框的狀態,即是否被選中。如果選中該複選框,然後登錄被全成,用戶名和密碼保存通過以下BlackBerry將複選框狀態保存在持久存儲中

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)); 

有人可以幫忙嗎?

+1

使用這樣的事情,checkBox1.getChecked()==真? 「TRUE」:用於將布爾值存儲爲String的「FALSE」。 – Rupak

回答

2

RIM rapc.exe編譯器不支持自動裝箱(它在Java 1.3的兼容模式),然後你需要將其保存在一個哈希表或轉給持久性存儲之前,您的布爾值換到一個Boolean類的實例。

0

嘿傢伙我設法找到解決我的問題。我通過檢查用戶名字段是否爲空來解決問題,然後複選框狀態應該是'未選中',否則應該'檢查'。這正在做我想要的。如果你們中的任何人有更好的方法做這個請做建議。代碼我的工作線路如下:

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

假=不加以控制,真正=檢查

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

我得到「當我嘗試將複選框狀態置於persistentHashtable中時,類型Hashtable中的方法put(Object,Object)不適用於參數(String,boolean)」。 – Sarah

+0

哦,是的..我沒有檢查代碼。用「true」或「false」等字符串替換布爾值並在獲取值時檢查它。 它可能工作。 –