Softkeyboard Android tidak pernah muncul di emulator

86

Saya baru mengenal Android. Saya sudah menghabiskan dua jam untuk mencari. Apapun yang saya coba, softkeyboard tidak pernah ditampilkan untuk saya EditText. Saya membuatnya dengan sederhana:

EditText editText = (EditText)findViewById(R.id.editText);

Saya mencoba:

 editText.requestFocus();//i tried without this line too
 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

dan:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

         @Override
         public void onFocusChange(View v, boolean hasFocus) 
         {    

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

         }
     });

saya juga mencoba:

getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

saya mencoba memasukkan baris ini ke dalam AndroidManifest.xmlfile:

 android:windowSoftInputMode="stateVisible|adjustResize"

tapi semuanya sia-sia. Itu tidak pernah terlihat. Apa yang saya lewatkan?

Andrey Chernukha
sumber
apakah keyboard terbuka di aplikasi lain?
Niranj Patel
coba ini ganti imm.showSoftInput (editText, InputMethodManager.SHOW_IMPLICIT); ini ke imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, 0);
Aravin
@CapDroid tidak, sayangnya. saya mencoba di aplikasi lain tetapi masih tidak berhasil
Andrey Chernukha
@Aravinth masih tidak berfungsi
Andrey Chernukha
Apakah Anda menggunakan emulator atau perangkat.
Aravin

Jawaban:

211

Anda perlu memastikan bahwa emulator Anda tidak disetel untuk menggunakan keyboard hardware . Ini dapat dilakukan dengan memilih Editemulator yang dipilih di AVD. Kemudian hapus centang pada Hardware keyboard presentpengaturan.

Anda juga dapat mencoba menggunakan emulator lain, seperti Genymotion . Ini mendukung akselerasi hardware penuh (CPU multi-core serta GPU) dan berjalan jauh lebih cepat daripada image emulator android mana pun. Jika Anda menggunakan Genymotion, Anda perlu menonaktifkan keyboard perangkat keras di Android (lihat di bawah untuk detailnya).

Untuk menonaktifkan keyboard perangkat keras di Genymotion:
Pergi ke Settings-> Language & inputdan buka Defaultitem di bawah Keyboard & Input Methods. Ada Hardwarepengaturan yang dapat Anda aktifkan / nonaktifkan. Saat aktif, Anda menggunakan keyboard fisik dan saat tidak aktif , keyboard lunak standar akan muncul setiap kali bidang teks mendapatkan fokus.

Tangkapan layar untuk pengaturan Genymotion: Item Default

masukkan deskripsi gambar di sini

free3dom
sumber
4
Akhirnya! Terima kasih banyak. Saya berharap saya bisa memberi suara positif pada jawaban Anda dua kali. Adapun Genymotion - saya menghabiskan satu hari sekali mencoba mengaturnya tetapi tidak berhasil. Saya bahkan tidak bisa menulis untuk dukungan mereka
Andrey Chernukha
Senang bisa membantu :) Adapun Genymotion, mereka terus meningkat, tetapi masih pratinjau / beta. Namun, sejak saya mulai menggunakannya, saya tidak memiliki satu masalah pun. Bisa jadi saya baru memulainya setelah mereka menyelesaikan sebagian besar masalah - atau saya hanya beruntung :). Meski begitu, emulator android memang memberikan lebih banyak variasi, jadi saya masih menggunakannya untuk menguji kompatibilitas.
free3dom
Bagus sekali, sekarang saya punya keyboard virtual! Tetapi saya memiliki EditText dengan android: inputType = "numberDecimal"> dan virtualkeyboard tidak menulis angka (itu menulisnya hanya jika saya menulis surat di depannya). Pemeriksa ejaan sudah mati ...
Michele
Lihat di sini untuk kemungkinan solusi.
free3dom
@ free3dom ~ "buka item Default di bawah Keyboard & Metode Masukan" Apa itu? Saya tidak melihat item itu.
IgorGanapolsky
73

Pada versi 2.1.1 - klik pada pengaturan perangkat virtual Anda - kemudian pilih kotak centang "gunakan keyboard virtual untuk mengetik". masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Sharif
sumber
2

Ada dua tempat untuk membatalkan pilihan keyboard perangkat keras di AS 1.1.0. Yang ini tidak cukup:

masukkan deskripsi gambar di sini

Harus melakukan ini (klik Tools | Android | AVD Manager; lalu buat baru atau edit AVD lama lalu klik Show Advanced Settings; gulir ke bawah dan hapus Enable keyboard input):

masukkan deskripsi gambar di sini

DSlomer64
sumber
Saya menghabiskan waktu mencari solusi ini karena indikator gulir biasanya hilang dan hanya muncul setelah Anda mulai menggulir. Saya akan merekomendasikan bahwa jika tampilan dapat digulir untuk memiliki beberapa indikasi kemungkinan itu secara visual.
GregM
Tidak berfungsi untuk saya di Android Studio. Saya tidak mencentang "Enable keyboard input" tetapi emulator masih TIDAK menampilkan keyboard software.
Evgenii
Anda hanya menyebutkan satu "hapus centang". Yang lainnya adalah "Memiliki keyboard perangkat keras", seperti yang ditunjukkan - dan Anda mungkin sudah menghapusnya juga. Mungkin mencoba perangkat virtual yang berbeda? Saya telah menemukan emulator AS cukup sulit untuk ditoleransi. Lambat memuat, kebiasaan seperti ini .... Semoga berhasil.
DSlomer64
2

Metode untuk mengaktifkan soft keyboard di layar untuk Emulator Android Studio 2+ bergantung pada level API emulator. Saya telah menguji berbagai metode yang dimulai dengan API 15 dan telah mencatat langkah-langkah di bawah ini.

[A] API 15, 17, 19 dan 21.

Langkah-langkah berikut akan mengaktifkan keyboard lunak di layar tetapi akan menonaktifkan kemampuan untuk memasukkan teks dan berinteraksi dengan AVD menggunakan keyboard perangkat keras komputer.

  1. Di Android Virtual Device Manager (AVD), klik tindakan edit untuk perangkat yang ingin Anda gunakan
  2. Klik Show Advanced Settings dan gulir ke bawah ke bawah halaman ke bagian "Keyboard"
  3. Hapus centang opsi "Aktifkan masukan keyboard"

[B] API 22

Keyboard lunak ditampilkan tidak peduli apa yang Anda lakukan dengan pengaturan keyboard perangkat keras. Jika Anda ingin mengaktifkan dukungan keyboard perangkat keras di samping keyboard lunak,

  1. Di AVD, klik tindakan edit untuk perangkat yang ingin Anda gunakan
  2. Klik Show Advanced Settings dan gulir ke bawah ke bawah halaman ke bagian "Keyboard"
  3. Centang opsi "Aktifkan masukan keyboard"

[C] API 23

Jika Anda ingin menggunakan perangkat keras dan keyboard lunak, maka ...

  1. Ikuti [B] langkah 1 hingga 3
  2. Di perangkat virtual, Buka Pengaturan, lalu pilih Bahasa dan masukan / Keyboard Saat Ini
  3. Aktifkan Perangkat Keras - Tampilkan metode masukan

Jika Anda tidak memerlukan keyboard perangkat keras, dalam pengaturan lanjutan AVD, hapus centang pada opsi "Aktifkan masukan keyboard". Anda tidak perlu mengubah pengaturan apa pun di perangkat virtual.

[D] API 24 dan 25

  1. Ikuti [B] langkah 1 hingga 3 di atas, centang atau hapus centang opsi "Aktifkan input keyboard" tergantung pada apakah Anda ingin mengaktifkan keyboard hardqare.
  2. Di perangkat virtual, Buka Pengaturan, lalu pilih Bahasa dan masukan / Keyboard Fisik
  3. Aktifkan "Tampilkan keyboard virtual"

Jika opsi Aktifkan masukan keyboard dipilih di AVD, Anda sekarang dapat menggunakan masukan keyboard keras dan lunak. Jika Anda tidak mencentang opsi di AVD, keyboard lunak akan tetap ditampilkan.

[E] API 26

Persis sama dengan [D] API 24 dan 25 kecuali Anda perlu menavigasi melalui tingkat menu "Sistem" tambahan di setelan perangkat sebelum Anda masuk ke Bahasa dan masukan / Keyboard Fisik

Akan P
sumber
1

Mungkin emulator Anda tidak mendukung softkeyboard ..

Tambahkan properti hardware. Dukungan Keyboard dan setel ke true untuk emulator Anda.

Jika sudah benar maka Periksa jawaban ini.

Niranj Patel
sumber
1

Memperlihatkan:

EditText editText = (EditText) findViewById(R.id.myEdit);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

Dan untuk menyembunyikan:

InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

Coba saja yang ini ....

FarhaSameer786
sumber
itu tidak membantu, sayangnya
Andrey Chernukha
InputMethodManager imm = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); ... coba ini
FarhaSameer786
@Andrey Chernukha-saya rasa emulator Anda tidak mendukung softkeyboard atau perangkat keras emulator tidak berfungsi dengan baik .....
FarhaSameer786