System Android wywołuje zmianę konfiguracji za każdym razem, gdy klawiatura jest podłączana do urządzenia lub od niego odłączana. Aby zapewnić użytkownikom komfort i maksymalną produktywność na urządzeniach z dużym ekranem i odłączaną klawiaturą, aplikacja musi skutecznie zarządzać zmianami konfiguracji klawiatury.
Wyniki
Aplikacja reaguje na podłączenie lub odłączenie klawiatury zewnętrznej bez ponownego tworzenia uruchomionej aktywności.
Zgodność wersji
W przypadku tej implementacji ustaw minSDK projektu na poziom API 8 (patrz View#onConfigurationChanged()).
Zależności
Brak.
Zapobieganie ponownemu tworzeniu aktywności po zmianie klawiatury
Aby zapobiec ponownemu tworzeniu aktywności po podłączeniu lub odłączeniu odłączanej klawiatury, dodaj wartości związane z klawiaturą do atrybutu configChanges w pliku manifestu aplikacji i dodaj widok do hierarchii widoków aktywności, aby aplikacja mogła nasłuchiwać zmian konfiguracji.
1. Zadeklaruj atrybut configChanges
Zaktualizuj element <activity> w manifeście aplikacji, dodając wartości keyboard|keyboardHidden do listy zmian już zarządzanej konfiguracji:
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. Dodawanie pustego widoku do hierarchii widoków
Zadeklaruj nowy widok i dodaj kod obsługi w metodzie onConfigurationChanged() widoku:
Kotlin
val v = object : View(this) {
override fun onConfigurationChanged(newConfig: Configuration?) {
super.onConfigurationChanged(newConfig)
// Handler code here.
}
}
Java
View v = new View(this) {
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Handler code here.
}
};
Najważniejsze punkty
android:configChanges: atrybut elementu<activity>w manifeście aplikacji. Informuje system o zmianach konfiguracji, którymi zarządza aplikacja.View#onConfigurationChanged(): metoda, która reaguje na propagację nowej konfiguracji aplikacji.
Kolekcje, które zawierają ten przewodnik
Ten przewodnik jest częścią wyselekcjonowanych kolekcji krótkich przewodników, które obejmują szersze cele związane z programowaniem na Androida: