Хорошо, в моем приложении у меня есть поле для ввода числа пользователем. У меня есть поле для приема только чисел. Когда пользователь щелкает по полю, появляется клавиатура. На клавиатуре (на ICS) есть кнопка готово. Я хотел бы, чтобы кнопка «Готово» на клавиатуре запускала кнопку отправки, которая есть в моем приложении. Мой код выглядит следующим образом.
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);
}
}
};
}
Ответы:
Вы также можете использовать это (устанавливает специальный прослушиватель, который будет вызываться при выполнении действия над EditText), он работает как для DONE, так и для RETURN:
источник
Вы можете попробовать
IME_ACTION_DONE
.источник
Попробуй это:
источник
Попробуйте это для Xamarin.Android (кроссплатформенный)
источник
Kotlin Solution
Базовый способ обработки выполненного действия в Kotlin:
Расширение Kotlin
Используйте это для вызова
edittext.onDone {/*action*/}
вашего основного кода. Делает это более читабельным и ремонтопригоднымНе забудьте добавить эти параметры в текст редактирования
источник
Я скопировал следующий код из AndroidStudio при создании объекта LoginActivity. Я использую атрибуты ime
В вашем макете
В вашей деятельности
источник
Вы можете реализовать на ключевом слушателе:
В onCreate:
...
источник
если вы хотите поймать кнопку ввода клавиатуры для выполнения своей работы, которую вы хотите выполнить с помощью любого события, такого как нажатие кнопки, вы можете написать приведенный ниже простой код для этого текстового представления
источник
Котлин и цифровая клавиатура
Если вы используете цифровую клавиатуру, вам нужно отключить клавиатуру, это будет примерно так:
источник
Используйте этот класс в своем макете:
}
В xml:
источник
источник
Ваш последний Edittext .setOnEditorActionListener вызывает этот метод с автоматическим обращением api
Я звонил в LoginActivity в et_password
Работает нормально
источник
А это версия Котлина:
источник