블랙 베리에 대한 SOAP 검증 클래스를 완료했지만 로그인 기능을 구현하는 데 문제가 있습니다. 내 응용 프로그램이 시작되면 주 클래스가 데이터베이스를 읽고 틱크 박스 (또는 체크 박스)가 선택되었는지 확인한 다음 SOAP validateUser를 수행하는 코드를 실행 한 후 다음 화면으로 이동합니다. 유효성 검사가 제대로 작동하고 올바른 값이 데이터베이스에서 검색되지만 Ui.getUiEngine(). pushScreen (새 ContentScreen())을 사용하려고하면 실패합니다. 나는 현재 화면을 아무런 쓸모도 터지려고 노력했다.Ui.getUiEngine(). pushScreen (new ContentScreen()) problem
public HelloBlackBerryScreen() {
super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR);
setTitle("IDL Voucher Application");
//createDB();
getValues();
if(tickBoxes[0]){
setUserPass();
}
if(tickBoxes[1]){
setUserPass();
}
checkBox1 = new CheckboxField("Save Password", tickBoxes[0]);
checkBox2 = new CheckboxField("Login Automatically",tickBoxes[1]);
hfm = new HorizontalFieldManager();
username = new BasicEditField("Username:", usernameField, 100,
BasicEditField.EDITABLE);
password = new PasswordEditField("Password: ", passwordBox);
username.setMargin(20, 10, 20, 20);
password.setMargin(20, 10, 20, 20);
this.add(username);
this.add(new SeparatorField());
this.add(password);
this.add(new SeparatorField());
this.add(checkBox1);
this.add(new SeparatorField());
this.add(checkBox2);
this.add(new SeparatorField());
this.add(hfm);
ButtonField buttonField_1 = new ButtonField("Login",
ButtonField.CONSUME_CLICK | ButtonField.FIELD_LEFT);
ButtonField buttonField_2 = new ButtonField("SignUp",
ButtonField.CONSUME_CLICK | ButtonField.FIELD_HCENTER);
ButtonField buttonField_3 = new ButtonField("Exit",
ButtonField.CONSUME_CLICK | ButtonField.FIELD_RIGHT);
// add(buttonField_2);
buttonField_1.setMargin(20, 10, 10, 35);
buttonField_2.setMargin(20, 10, 10, 10);
buttonField_3.setMargin(20, 10, 10, 10);
hfm.add(buttonField_1);
hfm.add(buttonField_2);
hfm.add(buttonField_3);
buttonField_1.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
if(username.getText().length() >1 && password.getText().length() >1){
try {
soap();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DatabaseIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
Dialog.inform("Please enter a username and password");
}
}});
buttonField_2.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
try {
signup();
} catch (DatabaseIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
buttonField_3.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
onClose();
}
});
checkBox1.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
//your code
if(checkBox1.getChecked() == true){
tickBoxes[0] = true;
updateFields();
}
else{
tickBoxes[0] = false;
updateFields();
}
}
});
checkBox2.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field arg0, int arg1) {
//your code
if(checkBox2.getChecked() == true){
tickBoxes[1] = true;
//Dialog.inform("Been Checked");
updateFields();
}
else{
tickBoxes[1] = false;
//Dialog.inform("Unchecked");
updateFields();
}
}
});
if(tickBoxes[1]){
try {
soap();
} catch (DatabaseIOException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage() + "database problem");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage() + "I/O problem");
e.printStackTrace();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage() + "XML problem");
e.printStackTrace();
}
}
}
과 SOAP 검증 : 여기
내 주요 방법 및 SOAP 검증 방법, 첫째 주입니다 : 나는 오류가있을 수 있습니다 생각public void soap() throws IOException, XmlPullParserException, DatabaseIOException {
System.out.println("STARTING");
if (DeviceInfo.isSimulator()) {
URL = URL + ";deviceSide=true";
}
// start here
SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
rpc.addProperty("User", username.getText());
rpc.addProperty("Password", password.getText());
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = true;
envelope.encodingStyle = SoapSerializationEnvelope.XSD;
HttpTransport ht = new HttpTransport(URL);
ht.debug = true;
try {
ht.call(SOAP_ACTION, envelope);
System.out.println("IN TRY");
SoapObject resultProperties = (SoapObject) envelope
.getResponse();
verifyNum = Integer.parseInt(resultProperties.getProperty(0)
.toString());
System.out.println("PARSED INT RIGHT HERE " + verifyNum);
URLis = resultProperties.getProperty(2).toString();
System.out.println("URL PARSE HERE " + URL);
} catch (org.xmlpull.v1.XmlPullParserException ex2) {
} catch (Exception ex) {
String bah = ex.toString();
}
String oldUser = "";
try {
URI uri = URI.create("file:///SDCard/Databases/" + "database1.db");
sqliteDB = DatabaseFactory.open(uri);
Statement st = null;
st = sqliteDB.createStatement("SELECT Name, URL FROM People");
st.prepare();
Cursor c = st.getCursor();
Row r;
int i = 0;
while(c.next())
{
r = c.getRow();
i++;
System.out.println(r.getString(0) + "HERE IS NAME");
System.out.println(r.getString(1) + "HERE IS URL");
// URLis = r.getString(1);
oldUser = r.getString(0);
}
st.close();
sqliteDB.close();
}
catch (Exception e) {
System.out.println(e.getMessage() + "wut");
e.printStackTrace();
}
if (verifyNum >= 1) {
try
{
URI myURI = URI.create("file:///SDCard/Databases/" + "database1.db");
sqliteDB = DatabaseFactory.open(myURI);
Statement st = null;
st = sqliteDB.createStatement("UPDATE People SET Password='"+ password.getText() + "', Name='" + username.getText() + "', URL='"+URLis + "' " +
"WHERE Name=" + "'"+ oldUser +"'" + "");
st.prepare();
st.execute();
st.close();
sqliteDB.close();
System.out.println("base for names is");
}
catch (Exception e)
{
System.out.println(e.getMessage() + "SUPER");
e.printStackTrace();
}
Ui.getUiEngine().pushScreen(new ContentScreen());
} else {
Dialog.inform("Incorrect Username or Password ");
}
}
마지막에
[0.0] net_rim_cldc-15(4C48DD41)
[0.0] UiEngineImpl
[0.0] addScreen
[0.0] 0x81EA
[0.0] net_rim_cldc-15(4C48DD41)
[0.0] UiEngineImpl$UiEngineOldInterfaceAdapter
[0.0] pushScreen
[0.0] 0xAF48
[0.0] net_rim_cldc-12(4C48DD41)
[0.0] UiApplication
[0.0] pushScreen
[0.0] 0xBEF4
[0.0] thenewBlackB(4E73609F)
[0.0] MyApp
[0.0] <init>
[0.0] 0x3031
[0.0] thenewBlackB(4E73609F)
[0.0] MyApp
[0.0] main
[0.0] 0x2FFD
[0.0] Warning: VerticalFieldManager INCREMENTAL_LAYOUT style specified without specifying USE_ALL_WIDTH | [0.0] USE_ALL_HEIGHT | VERTICAL_SCROLL
[0.0] Warning: VerticalFieldManager INCREMENTAL_LAYOUT style specified without specifying USE_ALL_WIDTH | [0.0] USE_ALL_HEIGHT | VERTICAL_SCROLL
[0.0] FocusHistory: Focus lost; App thenewBlackB; Component net.rim.device.api.ui.component.ButtonField
[0.0] TID:unable to execute in the app [email protected]|[email protected]|-1
두 번 하루에 하나. 고마워요. –
고마워요. 다행이에요. –