em vẫn chưa hiểu rõ về 2 lớp Display và Displâyble mong các bác giúp đỡ. Dưới đây là 1 ví dụ e viết thử, nó bị lỗi khi chọn menu "đăng ký". Các bác phân tích lối và cách sửa giúp e với ạ.
File Midlet.java
đây là RegAcc.java // hiển thị menu dùng đăng ký acc
File Midlet.java
Code:
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class Midlet extends MIDlet implements CommandListener{
private Display display;
Form mainForm,test;
Command cmOk,cmExit,cmBack,cmReg,cmAbout;
static TextField id,pass;
Alert loi;
public Midlet(){
cmOk = new Command("Login",Command.OK,1);
cmReg = new Command("Đăng ký", Command.OK,1);
cmBack = new Command("Trở về",Command.OK,2);
cmExit = new Command("Thoát",Command.EXIT,2);
id = new TextField("Username","",16,TextField.ANY);
pass = new TextField("Password","",16,TextField.PASSWORD);
}
public void startApp() {
display = Display.getDisplay(this);
display.setCurrent((Form)initMainForm());
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
// Form hiển thị chính khi bắt đầu
Displayable initMainForm(){
mainForm = new Form("Đăng nhập vào Hệ thống");
cmReg = new Command("Đăng Ký", Command.ITEM,3);
cmAbout = new Command("Giới thiệu", Command.ITEM,3);
mainForm.append(id);
mainForm.append(pass);
mainForm.addCommand(cmOk);
mainForm.addCommand(cmExit);
mainForm.addCommand(cmReg);
mainForm.addCommand(cmAbout);
mainForm.setCommandListener(this);
return mainForm;
}
//Xy ly sự kiển
public void commandAction(Command cd, Displayable dl) {
if (dl == mainForm){
if (cd==cmOk){
test = new Form("Đăng nhập thành công");
test.append("Đăng nhập thành công rồi thím");
display.setCurrent(test);
}
if (cd == cmReg)
// Bấm đăng ký và không hiện thị đc menu đang ký của lớp RegAcc
try{
display.getCurrent();
RegAcc regAcc = new RegAcc();
display.setCurrent(regAcc.initReg());
} catch (Exception ex){
loi = new Alert("Lỗi");
loi.setString(ex.toString());
display.setCurrent(loi);
}
if (cd == cmAbout){
test = new Form("Giới thiệu");
test.append("GIOI THIEU");
test.addCommand(cmExit);
display.setCurrent(test);
}
if (cd == cmExit){
destroyApp(false);
notifyDestroyed();
}
}
}
}
Code:
import javax.microedition.lcdui.*;
public class RegAcc {
Form regForm;
Command cmOk,cmExit,cmBack,cmReg,cmAbout;
Display display;
public RegAcc(){
regForm = new Form("Đăng ký");
regForm.append(Midlet.id);
regForm.append(Midlet.pass);
ChoiceGroup radio = new ChoiceGroup("Đồng ý điều khoản của chúng tôi",ChoiceGroup.BUTTON);
radio.append("Đồng ý", null);
regForm.append(radio);
regForm.addCommand(cmOk);
regForm.addCommand(cmExit);
regForm.addCommand(cmBack);
}
public Displayable initReg(){
return regForm;
}
}