如何解决BlackBerry Application中的持久对象
| 问候, 我一直在尝试在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: \",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\"));
}
}
}
我还不能纠正这个问题。我非常感谢我在这方面可以提供的帮助,谢谢。
解决方法
请仔细阅读以下示例。
http://www.blackberryforums.com/developer-forum/13335-data-save-read-example.html
最好创建一个实用程序类以使用持久对象。
如何在持久性存储中保存BlackBerry设置
, 您正在将您的信息放入哈希表= O
persistentHashtable.put(\"UsernameData\",useremailField);
persistentHashtable.put(\"PasswordData\",passwordField);
并提交到persistentObject!
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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。