Предотвращать перезапуск активности при изменении ориентации
Я новичок в разработке Android. У меня есть отдельные экраны для портретного и ландшафтного режима. Когда я меняю свою ориентацию, загружается соответствующий экран, а активность перезапускается. Теперь я не хочу, чтобы моя активность перезапускалась, когда я меняю ориентацию, но должен загрузить соответствующий экран (axml).
Я пробовал
[Activity (Label = "MyActivity", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)]
приведенная выше строка перестает активироваться, но перезагружается, но загружает один и тот же экран (axml).
Пожалуйста, предложите.
спасибо
Ответы
Ответ 1
Напишите этот код в своей деятельности
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.landscapeView);
} else {
setContentView(R.layout.portraitView);
}
}
А также добавьте эту строку в файл манифеста
android:configChanges="orientation|keyboardHidden|screenSize"
Таким образом, это будет обрабатывать обе вещи, оно не перезапустит вашу активность и не загрузит макет в соответствии с вашими изменениями ориентации.
Ответ 2
Так как вы указали ОС, что хотите сами изменить ориентацию, теперь вам придется обрабатывать любые изменения в макете самостоятельно, например:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.portrait);
//do other initialization
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setContentView(R.layout.landscape);
//do other initialization
}
}