2010-03-17 22 views
42

A ve B olmak üzere 2 aktivitem var. A başladığında, bir koşulu kontrol eder ve doğruysa, startActivityForResult()'yı B'yi başlatmak için çağırır. B sadece metin girişi alır, bu nedenle yumuşak klavyenin B başlangıcında otomatik olarak açılmasını sağlar . Etkinlik başladığında, EditText zaten odaklanmış ve giriş için hazır.Etkinlik başladığında yumuşak klavyeyi göster

Sorun, klavyenin windowSoftInputMode="stateAlwaysVisible" ile B için <activity> etiketi altında ayarlanmış olsa bile windowSoftInputMode="stateAlwaysVisible" ile bile hiçbir zaman gösterilmemesidir. stateVisible'a ayarlanan değerle de çalıştım. Otomatik olarak görünmediğinden, gösterilmesini sağlamak için EditText'e dokunmam gerekiyor.

Çözümün ne olabileceğini bilen var mı?

+0

aşağıdaki kodu kullanarak (karanlıkta çekim ama) metin kutusuna üzerinde requestFocus denediniz mi? –

+0

Bunu denedim, işe yaramadı –

cevap

11

bir EditText üzerinde requestFocus göstermekten değilse, belki bu yapacağım: Daha fazla bilgi için

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(mEditText, 0); 

Look here. Benim için en iyi çalıştı Ne

+2

Bunu denedim, ama işe yaramadı –

+0

Bu benim için çalışıyor – fredley

+1

Bu, tezahürünüzde olduğu gibi başka herhangi bir yerde başka bir yumuşak giriş durumu belirtmediğiniz sürece işe yaramalı veya kod içinde. i.e this.getWindow(). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); – topwik

75

sizin için de yardımcı olur

android:windowSoftInputMode="stateVisible"

Umut ekleyerek etkinlik B için Android Manifest içindedir.

+1

Şimdiye kadar, bu Nexus One 2.2 çalışan iyi çalışır, ancak 2.1 ile Milestone gibi bazı Motorola cihazlarının bunu görmezden geldiğine dikkat etmeliyim. – Leo

+0

Teşekkürler, bu program aracılığıyla https://stackoverflow.com/questions/5593053/open-soft-keyboard-programmatically kontrol edin –

+0

Aygıt yönlendirme değiştiğinde, klavyede 'stateVisible' kullanma ile sonuçlanır. Bu davranış istenmezse, o zaman 'stateVisible' çözüm değildir. –

2

Eğer bir emülatör kullanıyorsanız, göstermek yumuşak klavye için sırayla kapalı sert klavyeyi açmak zorunda.

6

buna benzer bir şey deneyin: Benim için

public void onResume() { 
    super.onResume(); 

    TimerTask tt = new TimerTask() { 

     @Override 
     public void run() { 
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(yourTextBox, InputMethodManager.SHOW_IMPLICIT); 
     } 
    }; 

    final Timer timer = new Timer(); 
    timer.schedule(tt, 200); 
} 
+2

zamanlayıcı görevi? ne için? – busylee

+0

@busylee, bir İşleyiciyi veya seçtiğiniz bir gecikme sırasında herhangi bir şeyi yürütme yöntemini kullanabilirsiniz. Bu sadece bir örnektir. – Mannaz

+0

Gecikme – busylee

10

sadece bu çözümleri çalıştı: bu etkinliğe ilişkin bildirim ekleyin:

android:windowSoftInputMode="stateVisible|adjustPan" 
+0

Donanım klavye ile cihazlar için işe yaradı mı? Bunu, donanım klavyeli cihazlarda, yani 2.2 cihazda çalışmakta zorlanıyorum – NinjaCoder

16

En kolay çözüm: Put

android:windowSoftInputMode = "stateVisible" 

AndroidManifest.xml'sinde

aktivitesi bölümünde
0

Dosya: AndroidManifest.xml

<activity android:name=".MainActivity"> 

Ekleme özelliği şunlardır: benim için çalıştı

android:windowSoftInputMode="stateVisible" 

.

0

iki yolu var.

Yöntem 1. Kullanım OnCreate yönteminde

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

Size tıklayın sürece klavyeyi gelmeyip önleyecektir içine aşağıdaki kodu.

veya

Yöntem 2 Sen xml "requestfocus" kullanarak TextView gibi diğer görünümde odağı uzağa hareket edebilir.

<TextView 
      android:id="@+id/year_birth_day" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:text="1991">    
      <requestFocus /> 
      </TextView> 

Yöntem 3 (Ben önlenebilir olması gerektiğini düşünüyorum) manifest-

android:windowSoftInputMode="stateVisible" 
İlgili konular