Oke di aplikasi saya, saya memiliki bidang bagi pengguna untuk memasukkan nomor. Saya menetapkan bidang hanya menerima angka. Ketika pengguna mengklik bidang itu menampilkan keyboard. Pada keyboard (pada ICS) ada tombol yang dilakukan. Saya ingin tombol selesai pada keyboard untuk memicu tombol kirim yang saya miliki di aplikasi saya. Kode saya adalah sebagai berikut.
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);
}
}
};
}
android
keyboard-events
android-softkeyboard
mpeerman
sumber
sumber
Jawaban:
Anda dapat menggunakan ini juga (menetapkan pendengar khusus untuk dipanggil ketika tindakan dilakukan pada EditText), ini berfungsi baik untuk DILAKUKAN dan KEMBALI:
sumber
Anda bisa mencobanya
IME_ACTION_DONE
.sumber
Coba ini:
sumber
Coba ini untuk Xamarin. Android (Cross Platform)
sumber
Solusi Kotlin
Cara dasar untuk menangani tindakan yang dilakukan di Kotlin adalah:
Perpanjangan Kotlin
Gunakan ini untuk memanggil
edittext.onDone {/*action*/}
kode utama Anda. Menjaga agar lebih mudah dibaca dan dipeliharaJangan lupa untuk menambahkan opsi ini ke edittext Anda
sumber
Saya menyalin kode berikut dari AndroidStudio ketika Anda membuat LoginActivity. Saya menggunakan atribut ime
Dalam tata letak Anda
Dalam Aktivitas Anda
sumber
Anda dapat menerapkan pada pendengar kunci:
Di onCreate:
...
sumber
jika Anda ingin menangkap tombol enter keyboard untuk melakukan pekerjaan Anda yang ingin Anda lakukan melalui peristiwa seperti klik tombol, Anda dapat menulis kode sederhana di bawah ini untuk tampilan teks
sumber
Keyboard Kotlin dan Numeric
Jika Anda menggunakan keyboard numerik Anda harus mengabaikan keyboard, itu akan seperti:
sumber
Gunakan kelas ini di tata letak Anda:
}
Dalam xml:
sumber
sumber
Edittext Terakhir Anda .setOnEditorActionListener memanggil metode ini secara otomatis mengenai api
Saya adalah Call in LoginActivity di et_password
Bekerja dengan baik
sumber
Dan ini adalah versi Kotlin:
sumber