Intereting Posts

Предотвращать перезапуск активности при изменении ориентации

Я новичок в разработке Android. У меня есть отдельные экраны для портретного и ландшафтного режима. Когда я меняю свою ориентацию, соответствующий экран загружается и активность перезапускается. Теперь я не хочу, чтобы моя активность перезапускалась, когда я меняю ориентацию, но должен загрузить соответствующий экран (axml).

я пытался

[Activity (Label = "MyActivity", ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)]

Приведенная выше строка перестает активироваться, но перезагружается, но загружает один и тот же экран (axml). Пожалуйста, предложите. благодаря

Напишите этот код в своей деятельности

@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" 

Таким образом, это будет обрабатывать обе вещи, оно не перезапустит вашу активность и не загрузит макет в соответствии с вашими изменениями ориентации.

Поскольку вы указали ОС, что вы хотите самостоятельно изменить ориентацию, теперь вам нужно обрабатывать любые изменения в макете самостоятельно, например:

 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 } }