2010-03-17 17 views
42

beginnt Ich habe 2 Aktivitäten, A und B. Wenn A beginnt, ist es für einen Zustand überprüft und wenn sie wahr sind, nennt es startActivityForResult() B. B starten dauert nur Texteingabe, so dass es Sinn für die weiche macht Tastatur, die automatisch erscheint, wenn B startet. Wenn die Aktivität beginnt, hat der EditText bereits den Fokus und ist bereit für die Eingabe.anzeigen Soft-Tastatur, wenn Aktivität

Das Problem ist, dass die Tastatur nie angezeigt wird, auch mit windowSoftInputMode="stateAlwaysVisible" im Manifest unter dem <activity> Tag für B eingestellt. Ich habe auch mit dem Wertversucht. Da es nicht automatisch angezeigt wird, muss ich auf den EditText tippen, damit er angezeigt wird.

Wer weiß, was die Lösung sein könnte?

+0

(Aufnahmen im Dunkeln, aber) haben Sie versucht, request auf das Textfeld? –

+0

Ich habe das versucht, es hat nicht funktioniert –

Antwort

11

Wenn request auf einem EditText ist es nicht angezeigt wird, vielleicht wird dies es tun:

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

Blick here für weitere Informationen.

+2

Ich habe das versucht, aber es hat nicht funktioniert –

+0

Das funktioniert für mich – fredley

+1

das sollte so lange funktionieren, wie Sie keinen anderen weichen Eingabezustand irgendwo anders angeben, wie in Ihrem Manifest oder im Code. i.this.getWindow(). setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); – topwik

75

Was das Beste für mich gearbeitet ist für Aktivität B in Android Manifest

android:windowSoftInputMode="stateVisible"

Hoffnung hinzufügen, die auch für Sie hilft.

+1

Ich sollte anmerken, dass dies bisher für das Nexus One mit 2.2 funktioniert, aber einige der Motorola-Geräte wie Milestone mit 2.1 scheinen dies zu ignorieren. – Leo

+0

Danke, dies programmgesteuert zu überprüfen https://stackoverflow.com/questions/5593053/open-soft-keyboard-programmatically –

+0

Mit 'stateVisible' Ergebnisse in der Tastatur wieder erscheint, wenn die Ausrichtung des Geräts ändert. Wenn dieses Verhalten nicht erwünscht ist, ist 'stateVisible' nicht die Lösung. –

2

Wenn Sie einen Emulator verwenden, müssen Sie die harte Tastatur ausschalten, damit die Bildschirmtastatur angezeigt wird.

6

etwas ähnliches wie das Versuchen:

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

Timer-Aufgabe? Wofür? – busylee

+0

@busylee Sie können einen Handler oder eine andere Methode der Ausführung von etwas in einer Verzögerung Ihrer Wahl verwenden. Dies ist nur ein Beispiel. – Mannaz

+0

Es gibt keinen Grund, die Verzögerung – busylee

10

Für mich war nur diese Lösungen: für diese Tätigkeit in Manifest hinzufügen:

android:windowSoftInputMode="stateVisible|adjustPan" 
+0

Hat es für Geräte mit Hardware-Tastatur funktioniert? Ich habe es schwer, dies in Hardware-Tastaturgeräten, d. H. 2,2 Geräte zu arbeiten – NinjaCoder

16

einfachste Lösung: Setzen Sie

android:windowSoftInputMode = "stateVisible" 

im Abschnitt Aktivität von AndroidManifest.xml

Datei
0

: AndroidManifest.xml

<activity android:name=".MainActivity"> 

Add folgende Eigenschaft:

android:windowSoftInputMode="stateVisible" 

, die für mich gearbeitet.

0

Ich habe zwei Wege.

Methode 1. Verwenden Sie den folgenden Code innerhalb der OnCreate Methode

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

Es wird verhindert, dass Tastatur Aufspringen, wenn Sie klicken.

oder

Methode 2 Sie können den Fokus auf andere Ansicht wie Textview unter Verwendung von „request“ in der XML-wegbewegen.

<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> 

Methode 3 (ich glaube, es sollte vermeidbar sein) Mit dem folgenden Code in der manifest-

android:windowSoftInputMode="stateVisible" 
Verwandte Themen