Próbowałem rozwiązać ten problem, przeszukany przez Internet, nie znaleziono żadnej prawdziwej odpowiedzi.YouTubePlayerSupportFragment w pojedynczej aplikacji Aktywności ze zmianą orientacji
Pracuję nad aplikacją, w której potrzebny jest odtwarzacz YouTube. Ten odtwarzacz jest YouTubePlayerSupportFragment
, ponieważ znajduje się w fragmencie wsparcia (więc jest również zagnieżdżony). Po wstępnej konfiguracji zdałem sobie sprawę, że za każdym razem, gdy obracam telefon, wideo przestaje grać i musi zostać ponownie uruchomione. To oczywiście nie jest to, czego chcę.
Następnie znalazłem kilka odpowiedzi SO (like this), gdzie ludzie mówią, że działanie musi obsłużyć zmiany w konfiguracji, więc dodałem android:configChanges="keyboardHidden|orientation|screenSize"
do działania w manifeście. To rozwiązało problem, wideo odtwarza się nawet po zmianie orientacji, a obrót na pełnym ekranie nie wygląda źle. Fajnie, powiedziałem, tylko po to, by zdać sobie sprawę z tego, że to spartaczyło się z innymi częściami aplikacji, ponieważ konfiguracja jest teraz aktualizowana po wszystkie widoki są na miejscu. Oznacza to, że jeśli mój telefon był w trybie portretowym, a następnie obróciłem go w orientację poziomą, używany układ nadal miał być portretem.
znalazłem rozwiązania tego sugeruje powołanie setContentView(...)
w działalności na onConfigurationChanged(...)
i reinflating pogląd we fragmentach, ale to wydaje się być dość uciążliwe, jeśli nie straszne rozwiązanie, ponieważ nie tylko proste ustawienie treści muszę fragmenty potrzebne do zatrzymania (np. pozycja przewijania w RecyclerView
). Wbudowany setRetainInstance(true)
nie działa w tym przypadku, ponieważ widok byłby odtworzony także z tym, ale konfiguracja jest wciąż stara, gdy wywoływana jest onCreateView(...)
.
Byłoby miło, gdybym mógł złapać zdarzenia configChanges
, jeśli użytkownik jest tylko na tym ekranie (fragment), ale zachowuje aktywność rekreacyjną w innym miejscu.
Nie sugeruj używania więcej działań, I nie może używać oddzielnej aktywności dla tego ekranu i reszty aplikacji ze względu na UI/UX.
Jeśli problem dotyczy fragmentu odtwarzacza, należy go nadmuchać w oddzielnej czynności i dodać właściwości do tego działania. Pozostałe konfiguracje nie będą miały wpływu. –
Tak jak powiedziałem w ostatnim zdaniu: używanie innego działania jest ** nie jest opcją **. –
Czy próbowałeś używać stanów onSaveInstanceState i onRestoreInstance, które zawsze były używane, gdy chcesz zachować pewien stan poprzez zmiany orientacji? Nie wiem, jaka jest struktura kodu, ale na przykład w onSaveInstanceState można zachować identyfikator wideo, który jest odtwarzany teraz i w czasie. I w onRestoreInstanceState przejąć te dane i przekazać je do fragmentu lub Youtube Player lub cokolwiek innego. W tym przypadku nie ma potrzeby w "android: configChanges =" keyboardHidden | orientation | screenSize "' –