2011-06-08 15 views
16

Podążyłem za różnymi pytaniami i odpowiedziami tutaj, aby skonfigurować moją aktywność Androida, aby nadpisać w celu wykonania logiki po otwarciu i zamknięciu miękkiej klawiatury. Oto odpowiednie fragmenty z mojego kodu. Ja gotuje je w dół do najprostszej scenariusz:onConfigurationChanged() nie wystrzeliwuje na klawiaturęUkryte

AndroidManifest.xml

... 
<activity 
    android:name=".SearchActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation" 
/> 
... 

SearchActivity.java

... 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show(); 
} 
... 

Powyższy kod wyświetli Toast przy zmianie orientacji , ale nie robi nic, gdy miękka klawiatura otwiera się lub zamyka. Przetestowałem otwieranie miękkiej klawiatury poprzez ogniskowanie EditText i ręczne otwieranie za pomocą długiego naciśnięcia przycisku menu. Nie wywołuj połączenia .

W związku z tym wydaje się, że kod działa, ponieważ zmienia się orientacja, ale nie dostaję nic dla miękkiej klawiatury. Jakieś pomysły? Jeśli odpowiedź brzmi "onConfigurationChanged() nie przechwytuje zdarzeń miękkiej klawiatury", jakie jest odpowiednie rozwiązanie do wykrywania i obsługi tego zdarzenia?

W przypadku, gdy jest to istotne, testuję na Droidie X z Gingerbread.

+0

Mam podobny problem, czy w końcu to zrobiłeś? – Jacky

Odpowiedz

14

Nie, funkcja onConfigurationChange() nie przechwytuje zdarzeń klawiatury miękkiej: nie jest to zmiana konfiguracji. Zmiana orientacji powoduje użycie nowego zestawu zasobów (np. Layout-land vs layout-port), który jest definicją zmiany konfiguracji.

Jak to zrobić? Cóż, podczas wyświetlania klawiatury nie ma zdarzenia, ale można wykryć, kiedy klawiatura powoduje dostosowanie układu.

Wyświetl kod w kodzie How to check visibility of software keyboard in Android?.

+29

To brzmi jak błąd dla mnie. 'keyboardHidden' jest bez wątpienia częścią obiektu' Configuration', a nawet użyte w przykładzie tutaj http://developer.android.com/guide/topics/resources/runtime-changes.html Z dokumentów: 'Flaga wskazująca czy klawiatura jest dostępna. W przeciwieństwie do hardKeyboardHidden, uwzględnia to również miękką klawiaturę, więc jeśli twarda klawiatura jest ukryta, ale dostępna jest klawiatura miękka, zostanie ustawiona na NIE. Wartość jest jedną z: KEYBOARDHIDDEN_NO, KEYBOARDHIDDEN_YES. " –

Powiązane problemy