2012-04-13 38 views
0

我有一个包含四个edittexts.In每个EditText上我只接受每个edittexts.Once我在第四输入值的EditText应该调用构造单个数字value.I设置requestFocus()方法主屏幕,火查询&应该返回我登录是否成功not.Instead,它给我消息“登录失败”错误登录在检索

这里是我的代码

edit4.setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View arg0, int arg1, KeyEvent arg2) 
    { 
     // TODO Auto-generated method stub 
     if(edit4.getText().toString().length()==1) 
     { 
      ParentDBHelper helper = new ParentDBHelper(getApplicationContext(), "db_parents", null, 2); 
      SQLiteDatabase db=helper.getWritableDatabase(); 
      Cursor c=db.rawQuery("SELECT * FROM tbl_countries", null); 
      // check if the table is empty 
      if (!c.moveToNext()) 
      { 
       Toast.makeText(getApplicationContext(), "No data to display, please make sure you have already inserted data!", Toast.LENGTH_LONG).show(); 
       db.close(); 
       return false; 
      } 
      c.moveToPrevious(); 
      // if the table is not empty, read the result into a string named display 
      while(c.moveToNext()) 
      { 
       String 
       String no1=c.getColumnName(5); 
       if(no1==edit1.getText().toString()+edit2.getText().toString()+edit3.getText().toString()+edit4.getText().toString()) 
       { 
        flag_status_pin=1; 
        Toast.makeText(getApplicationContext(), "Login Successful!!", Toast.LENGTH_LONG).show(); 
        Intent dash1=new Intent(getApplicationContext(),DashBoard.class); 
        startActivity(dash1); 
       } 
      } 
      if(flag_status_pin==0) 
      { 
       Toast.makeText(getApplicationContext(), "Login Failed!!", Toast.LENGTH_LONG).show(); 
       Intent homes=new Intent(getApplicationContext(),home.class); 
       startActivity(homes); 
      } 

     }//if 

     return false; 
    }}); 

感谢。

回答

0

这将是更好地使用TextWatcher您的EditText(S)比的KeyListener:

TextWatcher watcher = new TextWatcher(){ 

    @Override 
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    } 

    @Override 
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
    //Test here for login 

}

@Override 
    public void afterTextChanged(Editable editable) { 
    } 
}; 

然后将其设置为edit4.addTextChangedListener(watcher);您需要更改乌尔逻辑一点点。

+0

谢谢You.In哪种方法,我应该写的代码? – swanand 2012-04-13 14:31:04

+0

@swanand:的onCreate()将fine..you可以postthe更新的代码,如果ü面对任何问题 – Akhil 2012-04-14 03:51:45

0

您比较字符串使用==。这不起作用。改用equals。

而且,你是比较你的PIN码以列名?难道你不应该把它比作

c.getString(5) 

改为?

+0

Thanks.But它不是在循环飞到哪里,IM烧制query.Instead它总是显示我“登录失败” – swanand 2012-04-16 14:32:31

+0

我” m不确定在你将moveToNext超出游标限制后你可以回来。如果moveToFirst [...] else返回,我会用单个替换if和while和moveToPrevious – njzk2 2012-04-16 15:00:50