System Android wywołuje zmianę konfiguracji za każdym razem, gdy klawiatura jest podłączana do urządzenia lub odłączana od niego. Aby zapewnić użytkownikom płynną obsługę i zmaksymalizować ich 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 interfejsu 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
configChanges atrybutu w manifeście 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 już zarządzanych zmian konfiguracji
<activity
...
android:configChanges="...|keyboard|keyboardHidden">
2. Dodaj pusty widok do hierarchii widoków
Zadeklaruj nowy widok i dodaj kod obsługi w metodzie onConfigurationChanged() tego 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.
Zbiory zawierające ten przewodnik
Ten przewodnik jest częścią tych wybranych zbiorów krótkich przewodników, które obejmują szersze cele związane z tworzeniem aplikacji na Androida: