» 首頁 » 討論區 » 綜合討論 »寫登入相關的判斷出錯了

寫登入相關的判斷出錯了

發表人: 餅乾
積分: 10
發表時間: 2011-09-25 00:13:37
大家好,我是一個剛接觸android沒有很久的新手ˊˋ
在寫登入相關的程式遇到問題了QQ

因為判斷的問題,flag=1就代表沒有找到match的資料
我也有設flag==1就代表帳密都忘記了
但是現在不管輸入什麼,輸入的是不是對的資料
都還是會切至下一頁
請問我應該怎麼改變呢??
真的很抱歉上來問這種應該很容易的問題> <


private Button.OnClickListener Login=new Button.OnClickListener()
{ public void onClick(View v)
{
int flag=0;
if("".equals(id.getText().toString()))
flag=1;
else if("".equals(password.getText().toString()))
flag=1;

if(flag==1) alertdlg("您忘了輸入帳號或密碼");
else {
Intent gotoClothing = new Intent(Login.this, hot.class);
startActivity(gotoClothing);
}

}
} ;
發表人: Seachaos
積分: 2432
發表時間: 2011-09-25 09:57:52
你的做法沒有錯
問題是在於你沒有做帳號密碼的判斷

可以看一下類似這樣做
[sea:javaCode]
private Button.OnClickListener Login=new Button.OnClickListener()
{
public void onClick(View v)
{
int flag=0;
if("".equals(id.getText().toString()))
flag=1; // 如果是空帳號
else if("".equals(password.getText().toString()))
flag=1; // 如果是空密碼

if(flag==1)
alertdlg("您忘了輸入帳號或密碼");
else {
// 這裡應該做帳號密碼的判斷
if(... ){
// 假如登入成功
Intent gotoClothing = new Intent(Login.this, hot.class);
startActivity(gotoClothing);
}else{
// 登入失敗
}
}

}
} ;
[/sea]
發表人: 餅乾
積分: 10
發表時間: 2011-09-26 16:12:31
我發現是判斷的問題,應該要改成if(!"".equals(id.getText().toString()))
用!才不會讓if迴圈在判斷的時候直接跳出去

int flag=0;

if(!"".equals(id.getText().toString()))
flag=1;
if(!"".equals(password.getText().toString()))
flag=1;


可是現在變成說,不管我輸入的是正確或是錯誤的資料= =
都會顯示:您輸入的帳號密碼不存在喔!
還在持續改進中ˊˋ
發表人: Seachaos
積分: 2432
發表時間: 2011-09-26 23:34:28
用!是不對的
因為 "".equals(id.getText().toString() 這是判斷 id是否等於 "" (空白)
但你加上!就是反相邏輯運算,所以原本 是判斷空白變成了判斷不是空白
也就是只要你有輸入資料的話flag就會是1的原因

可以看一下上面我修改的程式碼,我有加上註解
只要把帳號密碼驗證加在我說的地方就可以了
有問題的話歡迎一起討論 :)
發表人: 餅乾
積分: 10
發表時間: 2011-09-28 02:53:16
謝謝S大的回答唷!!!= )

那如果今天我們用C#寫了一個Socketest 連結到了SQL建立的DATABASE

C#的部分大概是連結到SQL,然後用INSERT的語法提取一個帳號密碼

那我Android這邊,是否就得利用C#這邊來判斷帳號密碼是否正確呢?

如果是大概的樣子會是!?
發表人: Seachaos
積分: 2432
發表時間: 2011-09-28 15:08:46
對,是Android提交帳號密碼到Server
Server檢查後再把結果回傳給Android手機