Android Utilice el botón Listo en Teclado para hacer clic en el botón

Ok en mi aplicación tengo un campo para que el usuario ingrese un número. Tengo el campo establecido para sólo aceptar números. Cuando el usuario hace clic en el campo que muestra el teclado. En el teclado (en ICS) hay un botón hecho. Me gustaría que el botón hecho en el teclado para activar el botón de envío que tengo en mi aplicación. Mi código es el siguiente.

package com.michaelpeerman.probability; import android.app.Activity; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.util.Random; public class ProbabilityActivity extends Activity implements OnClickListener { private Button submit; ProgressDialog dialog; int increment; Thread background; int heads = 0; int tails = 0; public void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); setContentView(R.layout.main); submit = ((Button) findViewById(R.id.submit)); submit.setOnClickListener(this); } public void onClick(View view) { increment = 1; dialog = new ProgressDialog(this); dialog.setCancelable(true); dialog.setMessage("Flipping Coin..."); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setProgress(0); EditText max = (EditText) findViewById(R.id.number); int maximum = Integer.parseInt(max.getText().toString()); dialog.setMax(maximum); dialog.show(); dialog.setOnCancelListener(new OnCancelListener(){ public void onCancel(DialogInterface dialog) { background.interrupt(); TextView result = (TextView) findViewById(R.id.result); result.setText("heads : " + heads + "\ntails : " + tails); }}); background = new Thread(new Runnable() { public void run() { heads=0; tails=0; for (int j = 0; !Thread.interrupted() && j < dialog.getMax(); j++) { int i = 1 + new Random().nextInt(2); if (i == 1) heads++; if (i == 2) tails++; progressHandler.sendMessage(progressHandler.obtainMessage()); } } }); background.start(); } Handler progressHandler = new Handler() { public void handleMessage(Message msg) { dialog.incrementProgressBy(increment); if (dialog.getProgress() == dialog.getMax()) { dialog.dismiss(); TextView result = (TextView) findViewById(R.id.result); result.setText("heads : " + heads + "\ntails : " + tails); } } }; } 

Puede utilizar este también (establece un oyente especial para ser llamado cuando se realiza una acción en el EditText), funciona tanto para DONE y RETURN:

 max.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) { Log.i(TAG,"Enter pressed"); } return false; } }); 

Prueba esto:

 max.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event){ if(keyCode == event.KEYCODE_ENTER){ //do what you want } } }); 

Puedes probar con IME_ACTION_DONE

Esta acción realiza una operación "done" para que nada ingrese y el IME se cerrará.

  Your_EditTextObj.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_DONE) { /* Write your logic here that will be executed when user taps next button */ handled = true; } return handled; } }); 

Pruebe esto para Xamarin.Android (Cross Platform)

 edittext.EditorAction += (object sender, TextView.EditorActionEventArgs e) { if (e.ActionId.Equals (global::Android.Views.InputMethods.ImeAction.Done)) { //TODO Something } }; 

Copié el siguiente código de AndroidStudio cuando creas una LoginActivity. Utilizo los atributos ime

En su diseño

 <EditText android:id="@+id/unidades" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/prompt_unidades" android:inputType="number" android:maxLines="1" android:singleLine="true" android:textAppearance="?android:textAppearanceSmall" android:enabled="true" android:focusable="true" android:gravity="right" android:imeActionId="@+id/cantidad" android:imeActionLabel="@string/add" android:imeOptions="actionUnspecified"/> 

En su actividad

 editTextUnidades.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == R.id.cantidad || actionId == EditorInfo.IME_NULL) { addDetalle(null); return true; } return false; } }); 

Puede implementar en el oyente dominante:

 public class ProbabilityActivity extends Activity implements OnClickListener, View.OnKeyListener { 

En onCreate:

 max.setOnKeyListener(this); 

 @Override public boolean onKey(View v, int keyCode, KeyEvent event){ if(keyCode == event.KEYCODE_ENTER){ //call your button method here } return true; } 

Utilice esta clase en su diseño:

 public class ActionEditText extends EditText { public ActionEditText(Context context) { super(context); } public ActionEditText(Context context, AttributeSet attrs) { super(context, attrs); } public ActionEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection conn = super.onCreateInputConnection(outAttrs); outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; return conn; } 

}

En xml:

 <com.test.custom.ActionEditText android:id="@+id/postED" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@android:color/transparent" android:gravity="top|left" android:hint="@string/msg_type_message_here" android:imeOptions="actionSend" android:inputType="textMultiLine" android:maxLines="5" android:padding="5dip" android:scrollbarAlwaysDrawVerticalTrack="true" android:textColor="@color/white" android:textSize="20sp" /> 
 max.setOnKeyListener(new OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event){ if(keyCode == event.KEYCODE_ENTER){ //do what you want } } }); 
  • Teclado cubre la pantalla en lugar de empujar hasta el diseño?
  • Desarrollo de Android: atajo de gancho en el teclado cuando se centra la actividad de la aplicación de teléfono
  • Cómo abrir un teclado numérico en android / chrome con <input type = "text">?
  • Cómo cambiar el fondo clave de cualquier tecla en el teclado suave de Android
  • Cómo hacer que el fragmento honre el modo de entrada suave de la actividad
  • El teclado virtual cubre un EditText en un PopupWindow
  • Redimensionamiento de la ventana de Android muy lento
  • ¿Cómo desarrollar un teclado personalizado para la aplicación de Android?
  • Desactivar Android Tecla Intro en el teclado virtual
  • No se puede mostrar el teclado automáticamente en el SearchView
  • Mostrar un teclado virtual de android en el diseño gráfico de eclipse
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.