2012-04-13 4 views
0

홈 화면에 4 개의 편집 문구가 있습니다. 각 편집 문구에서 하나의 숫자 값만 허용됩니다. 각 edittexts.Once에 requestFocus()를 설정하면 edittext에 값을 입력하고 생성자를 호출해야합니다 "로그인 실패"로, 그것은 나에게 메시지를주고, 로그인이 성공 또는 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

모든 KeyListener보다 당신 글고 치기 (들)에 대한 TextWatcher를 사용하는 것이 좋을 것이다 : 당신은 UR 논리 A를 변경해야합니다 edit4.addTextChangedListener(watcher);로 다음

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) { 
    } 
}; 

설정 약간.

+0

고맙습니다. 어떤 방법으로 코드를 작성해야합니까? – swanand

+0

@swanand : onCreate() 괜찮을거야 .. 당신은 어떤 문제가 얼굴에면 u 업데이트 된 코드를 게시 할 수 있습니다 – Akhil

0

==을 사용하여 문자열을 비교하고 있습니다. 이것은 작동하지 않습니다. 대신 equals를 사용하십시오.

또한 핀 코드를 열 이름과 비교하고 있습니까? 이걸 대신

c.getString(5) 

과 비교하면 안 될까요?

+0

고맙습니다.하지만 루프에 간다 어디에서 메신저는 항상 "로그인 실패"Query.Instead 발사 – swanand

+0

나는 ' 커서의 한계를 넘어 moveToNext를 호출 한 후에 다시 올 수 있는지 확신 할 수 없습니다. 나는 if와 while과 moveToPrevious를 하나의 moveToFirst [...]로 대체 할 것이다. – njzk2

관련 문제