Ok dans mon application, j'ai un champ pour que l'utilisateur saisisse un nombre. J'ai le champ défini pour n'accepter que des nombres. Lorsque l'utilisateur clique sur le champ, il fait apparaître le clavier. Sur le clavier (sur ICS), il y a un bouton Terminé. J'aimerais que le bouton Terminé du clavier déclenche le bouton Soumettre que j'ai dans mon application. Mon code est le suivant.
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);
}
}
};
}
Réponses:
Vous pouvez également utiliser celui-ci (définit un écouteur spécial à appeler lorsqu'une action est effectuée sur le EditText), cela fonctionne à la fois pour DONE et RETURN:
la source
Vous pouvez essayer avec
IME_ACTION_DONE
.la source
Essaye ça:
la source
Essayez ceci pour Xamarin.Android (Cross Platform)
la source
Solution Kotlin
La méthode de base pour gérer l'action effectuée dans Kotlin est:
Extension Kotlin
Utilisez ceci pour appeler
edittext.onDone {/*action*/}
votre code principal. Le rend plus lisible et maintenableN'oubliez pas d'ajouter ces options à votre edittext
la source
J'ai copié le code suivant d'AndroidStudio lorsque vous créez un LoginActivity. J'utilise les attributs ime
Dans votre mise en page
Dans votre activité
la source
Vous pouvez implémenter sur l'écouteur clé:
Dans onCreate:
...
la source
si vous voulez attraper le bouton d'entrée du clavier pour faire votre travail que vous voulez faire à travers n'importe quel événement comme un clic sur le bouton, vous pouvez écrire le code simple ci-dessous pour cette vue de texte
la source
Clavier Kotlin et numérique
Si vous utilisez le clavier numérique, vous devez fermer le clavier, ce sera comme:
la source
Utilisez cette classe dans votre mise en page:
}
En xml:
la source
la source
Votre Last Edittext .setOnEditorActionListener appelle cette méthode api automatique
J'ai été appelé dans LoginActivity dans et_password
Travailler bien
la source
Et ceci est une version Kotlin:
la source