2017-08-10 7 views
0

XML.xmlEDITTEXTは:ユーザがそのリストに表示された項目をクリックすると、入力イベントが、入力イベント受信を終了しようと既に

<android.support.design.widget.TextInputLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginRight="16dp" 
        android:layout_marginLeft="16dp" 
        app:hintTextAppearance="@style/WhiteTextInputLayout" 
        android:layout_marginTop="8dp" 
        android:id="@+id/txDept" 
        android:textColorHint="#FFF" 
        android:layout_marginBottom="8dp"> 
        <EditText 
         android:id="@+id/input_department" 
         android:layout_width="match_parent" 
         android:layout_marginRight="16dp" 
         android:layout_marginLeft="16dp" 
         android:layout_height="wrap_content" 
         android:textColor="#FFF" 
         android:editable="false" 
         android:drawableRight="@drawable/ic_department" 
         android:inputType="text" 
         android:hint="Department"/> 
       </android.support.design.widget.TextInputLayout> 

をJava.file

etDepartment.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       chooseDepartment(); 
       return true; 
      } 
     }); 

void chooseDepartment(){ 

     final CharSequence[] items = {AUTO,CIVIL,CSC,EEE,ECE,EIE,ETE,IT,MBA,MCA,MECH}; 
     final AlertDialog.Builder builder=new AlertDialog.Builder(SignUp.this); 
     builder.setTitle("Choose your Department"); 
     builder.setItems(items, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       etDepartment.setText(items[which]); 
       dialog.dismiss(); 
      } 
     }); 
     builder.show(); 

    } 

に配置されていますダイアログ.Edittextはそのテキストを設定します。

これで、1回のクリックでダイアログを閉じることができなくなりました.2回または3回クリックすると、ダイアログが閉じます。

私はlogcatで見たエラー:

W/InputEventReceiver:入力イベントを終了しようとしましたが、入力 イベントレシーバーが既にこのダイアログが複数回開いている

答えて

1

が配置されています複数の操作のためにOnTouchListenerに入ってしまうので、操作をしてみてくださいMotionEvent.ACTION_UP

お試しください

etDepartment.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       if(motionEvent.getAction() == MotionEvent.ACTION_UP) { 
        chooseDepartment(); 
       } 
       return true; 
      } 
     }); 
+0

ありがとう@Muthukrishnan ..働いています:) –

関連する問題