2013-03-04 17 views
6

Sto provando a rilevare l'evento di rimozione della tastiera dallo schermo e sto utilizzando la classe OnEditorActionListener. Tuttavia, il suo metodo onEditorAction non viene mai chiamato.Android. onEditorAction non ha mai chiamato

Questo è il mio EditText in XML:

<EditText 
    android:id="@+id/editTextSearch" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="20dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="50dp" 
    android:layout_weight="0.05" 
    android:background="@color/white" 
    android:ems="10"> 
</EditText> 

Questo è il modo con cui lavoro in java:

private void createTextEdit() 
{ 
    EditText searchTextField = (EditText)findViewById(R.id.editTextSearch); 
    searchTextField.addTextChangedListener(new TextWatcher() 
    { 
     public void afterTextChanged(Editable s) 
     { 
      System.out.println("AFTER TEXT CHANGED");                
     } 
     public void beforeTextChanged(CharSequence s, 
     int start, int count, int after) 
     { 
      System.out.println("BEFORE TEXT CHANGED " + s); 
     } 

     public void onTextChanged(CharSequence s, 
       int start, int before, int count) 
     { 
      System.out.println(s); 
     } 
    }); 

    searchTextField.setOnEditorActionListener(new OnEditorActionListener() 
    { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
     { 

      System.out.println("ACTION ID " + actionId);//NEVER CALLED 

      if(actionId == EditorInfo.IME_ACTION_DONE) 
      { 
       System.out.println("ACTION DONE!!!!!!!!!!"); 
       return true; 
      } 

      return false; 
     } 
    }); 

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.showSoftInput(searchTextField, InputMethodManager.SHOW_IMPLICIT); 
} 

Non importa quello che faccio con searchTextField se mi metto la modifica o finirlo , il metodo necessario non viene mai licenziato. Che cosa sto facendo di sbagliato?

risposta

0

Stesso problema qui su un Nexus 7.

ho pensato che fosse l'imeOptions, ma no.

Funziona nel mio tablet se ho impostato android:inputType="text".

Suppongo che funzioni con altri inputType.

Penso che sia un bug su Nexus.

Problemi correlati