2011-06-04 70 views
0

Greetings,BlackBerry應用程序中的持久對象

我一直在嘗試在BlackBerry Application中使用持久對象。 我正在做一個登錄頁面,我可以在應用程序中保存用戶名和密碼。 下面是我在登錄頁面

public final class LoginScreen extends MainScreen 
{ 
    private BasicEditField useremailField; 
    private PasswordEditField passwordField; 
    public HorizontalFieldManager hfm = new HorizontalFieldManager (FIELD_VCENTER); 


    public Hashtable persistentHashtable; 

    public PersistentObject persistentObject; 

    public static final long KEY = 0x9df9f961bc6d6baL; 

    public LoginScreen() 
    {   
     super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR); 
     // Set the displayed title of the screen  
     setTitle(new LabelField("Log In", LabelField.HCENTER| LabelField.USE_ALL_WIDTH)); 

     persistentObject = PersistentStore.getPersistentObject(KEY); 

     useremailField = new BasicEditField("Email Address:", "", 100, BasicEditField.EDITABLE); 
     passwordField = new PasswordEditField("Password: ", "", 100, PasswordEditField.EDITABLE); 

     ButtonField registerField = new ButtonField("Register", ButtonField.CONSUME_CLICK | ButtonField.FIELD_LEFT); 
     ButtonField loginField = new ButtonField("Login", ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT); 


     add(new LabelField("\n\n")); 
     add(useremailField); 
     add(new LabelField("\n")); 
     add(passwordField); 
     add(new LabelField("\n")); 

     hfm.add(registerField); 
     hfm.add(loginField); 

     setStatus(hfm); 

     loginField.setChangeListener(new FieldChangeListener() 
     { 
      public void fieldChanged(Field arg0, int arg1) 
      { 
       login(); 
      } 
     }); 
     persistentHashtable.put("UsernameData", useremailField); 
     persistentHashtable.put("PasswordData", passwordField); 

     persistentObject.commit(); 

    } 
    private void login() { 
     UiApplication ui = UiApplication.getUiApplication(); 
     ui.pushScreen(new Loggedin()); 

    } 
} 

下面使用的代碼

public class Loggedin extends MainScreen 
{ 
    private LabelField username; 
    private LabelField password; 

    public static PersistentObject persistentObject; 
    public Loggedin() 
    { 
     super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR); 
     setTitle("Registration Form"); 

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

     if (persistentHashtable.containsKey("EditData")) { 
      username.setText((String)persistentHashtable.get("UsernameData")); 
     } 
     if (persistentHashtable.containsKey("BoolData")) { 
      password.setText((String)persistentHashtable.get("PasswordData")); 
     } 
    } 

} 

我還沒有能夠糾正問題的登錄頁面的代碼。我非常感謝我在這方面的幫助,謝謝。

回答

1

你把你的信息到一個哈希表= O

persistentHashtable.put("UsernameData", useremailField); 
persistentHashtable.put("PasswordData", passwordField); 

,做承諾的持久性對象!

persistentObject.commit(); 

我認爲這就是你沒有保存價值的原因!

見這個例子:

private static PersistentObject persistentStore; 
    private static Object[] data = new Object[1]; 

//Load Username & Password 
    public static void LoadContents(){ 
     Object[] temp; 
     try{ 
      persistentStore = PersistentStore.getPersistentObject(GI.PERSISTANCEID); 
      if(persistentStore.getContents()!=null){ 
       temp = (Object[]) persistentStore.getContents(); 
       if(temp!=null){ 
        data[0] = temp[0]; 
        data[1] = temp[1];     
       } 

           username.setText((data[0]!=null)?(String)data[0]:""); 
           password.setText((data[1]!=null)?(String)data[1]:""); 

      }else{ 
       data = new Object[1]; 
      } 
     }catch(NullPointerException e){ 
      System.out.println("CA: S NPE "+e.getMessage()); 
     }catch(Exception e){ 
      System.out.println("CA: S E "+e.getMessage()); 
     } 
    } 



     //Save Username & Password 
    public static void saveUsername(String version){ 
data[0] = version; 
    persistentStore.setContents(data); 
    persistentStore.commit(); 
    } 

    public static void savePassword(String password){ 
     data[1] = password; 
    persistentStore.setContents(data); 
    persistentStore.commit(); 
    }