Я пытаюсь использовать android:configChanges="keyboardHidden|orientation|screenSize"
в своем манифесте, чтобы не потерять состояние моего VideoView
при изменении конфигурации. Это означает, что мне нужно самому выбирать макеты в конфигурации. Проблема, с которой я сталкиваюсь, заключается в том, что когда я впервые инициализирую, какое представление использовать в onCreate
, здесь:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.activity_make_photo_video_land);
} else if (getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.activity_make_photo_video);
}
}
Он выбирает правильный макет. Но когда мне нужно настроить макет при изменении конфигурации, как здесь:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.activity_make_photo_video_land);
} else if (getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.activity_make_photo_video);
}
}
Он не использует тот же экземпляр макета, а перезагружает его, из-за чего мой VideoView
становится черным. После этого я не могу нажимать никакие кнопки.
Есть ли способ повторно использовать первоначальные макеты? Я пытался установить представления, подобные этому setContentView(R.layout.activity_make_photo_video_land);
, для объекта Activity activity
, но IDE не позволяет мне, он говорит Activity is incompatible with void
. Потому что, если бы я мог получить ссылку на это представление, я мог бы использовать его повторно. Или есть более простой способ сделать это, которого я не вижу?
Спасибо.