0

4 つの edittexts を含むホーム画面があります。各 edittext では、1 桁の値のみを受け入れます。各 edittexts に requestFocus() を設定します。ログインが成功したかどうか。代わりに、「ログインに失敗しました」というメッセージが表示されます

これが私のコードです

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

ありがとう。

4

2 に答える 2

0

キーリスナーよりも編集テキストに TextWatcher を使用することをお勧めします。

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);ます。ロジックを少し変更する必要があります。

于 2012-04-13T12:57:12.933 に答える
0

を使用して文字列を比較して==います。これは動作しません。代わりに等号を使用してください。

さらに、ピンコードを列名と比較していますか? と比べるべきではないか

c.getString(5)

代わりは?

于 2012-04-13T13:51:25.633 に答える