如何在android中的EditText中使用onTouchListener

时间:2013-07-30 03:13:49

标签: android android-edittext android-sqlite ontouchlistener

我创建了一个发送两个字段名称和ph的应用程序。没有。到sqlite数据库。我想如果我在edittext中输入一些名称已经准备好已存储在数据库中,那么当我触摸该edittext时,该名称的电话记录应输入到下一个edtetext中。我在手机的editText上使用了onTouchListener。但是当我运行这段代码。它给出了一个空指针异常错误。 我没有得到我使用错误代码的地方......如果有任何关于e plzz的建议我解决方案

活动类的代码......

phoneeditText.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            if(event.getAction()==MotionEvent.ACTION_UP){
                Cursor c=help.getall();
                List<String>data=new ArrayList<String>();
                while(c.moveToNext()){
                    data.add(c.getString(c.getColumnIndex("name")));
                }
                String fname=name.getText().toString();
                if(data.contains(fname)){
                    help=new MyHelper(getApplicationContext());
                    Cursor c2=help.getall();
                    while(c2.moveToNext()){
                        phoneeditText.setText(c2.getString(c2.getColumnIndex("phone")));
                    }
                    }
                    //help.update(myname, call, myarea);
                    //Toast.makeText(getApplicationContext(), myname+"already saved..it's updating", Toast.LENGTH_SHORT).show();

                return true;
            }
            return false;
        }
    });

SQLiteOpenHelper类的代码

public Cursor getall(){
    sd=this.getWritableDatabase();
    Cursor c=sd.query("location", null, null, null, null, null, null);
    return c;
来自logcat的

消息

07-30 03:27:48.567: E/AndroidRuntime(376): java.lang.NullPointerException
07-30 03:27:48.567: E/AndroidRuntime(376):  at com.kuldeep.localsave.Act1$1.onTouch(Act1.java:145)
07-30 03:27:48.567: E/AndroidRuntime(376):  at android.view.View.dispatchTouchEvent(View.java:3881)
07-30 03:27:48.567: E/AndroidRuntime(376):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)

1 个答案:

答案 0 :(得分:1)

获取edittext的addTextChangedListener,并将所有搜索代码放在TextChaged方法上。

  phoneeditText.addTextChangedListener(new TextWatcher()
            {

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void afterTextChanged(Editable s) {
                    // TODO Auto-generated method stub

                }
            });