BlackBerry 应用程序中的持久对象
我一直在尝试在黑莓应用程序中使用持久对象。 我正在制作一个登录页面,可以在应用程序中保存用户名和密码。以下是我在登录页面中使用的代码
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"));
}
}
}
我无法纠正该问题。
I have been trying to use the persistent object in BlackBerry Application.
I am making a login page where I can save the username and password in the application. Below is the code I used in the login page
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());
}
}
Below is the code of the logged in page
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"));
}
}
}
I haven't been able to rectify the problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请查看以下示例。
http://www.blackberryforums.com/developer-forum /13335-data-save-read-example.html
最好创建一个实用程序类来使用持久对象。
如何在持久存储中保存 BlackBerry 设置< /a>
Please go through the following sample.
http://www.blackberryforums.com/developer-forum/13335-data-save-read-example.html
It is better to create a utility class to use the persistent object.
How To Save BlackBerry Settings in The Persistent Store
您将您的信息放入哈希表 =O
并提交到持久对象!
我认为这就是您不保存价值观的原因!
看这个例子:
You are putting your info into a hashtable =O
and doing the commit to the persistentObject!
I think thats the reason you are not saving the values!
See this example: