Итак, у меня есть веб-представление в действии
Мне нужно, чтобы он сохранял ориентацию так же, как тот, в котором находились устройства, когда пользователь открыл активность (поэтому, если LANDSCAPE, когда была открыта активность, → держите это!.. если PORTRAIT → сохраните это)
Так
Эти два шага не делают ничего:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(null);
или
public void onConfigurationChanged(Configuration newConfig) {
newConfig.orientation = getResources().getConfiguration().orientation;
super.onConfigurationChanged(newConfig);
Так идеи?
Я не уверен, почему вы хотите реализовать эту функцию, но это должно работать:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) // you only want to save orientation when you are loading the activity for the first time
{
((MyApp)getApplication()).orientation = getResources().getConfiguration().orientation; // I saved the orientation in the application class, but you can save it anywhere you like except in "this"
Log.d("test", "orientation in onCreate: "+((MyApp)getApplication()).orientation);
}
}
@Override
protected void onResume() {
super.onResume();
Log.d("test", "setContentview with orientation in onResume "+((MyApp)getApplication()).orientation);
if(((MyApp)getApplication()).orientation==Configuration.ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.my_layout_portrait);
}
else if(((MyApp)getApplication()).orientation ==Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.my_layout_landscape);
}
}
С другой стороны, мне плохо, чтобы заставить такую ориентацию.
Вы должны прочитать о жизненном цикле деятельности андроидов. при повторном открытии операции создается новый экземпляр. Поэтому не было "предыдущей" ориентации. если вы хотите иметь ту же ориентацию, что и при приостановке действия, вы должны сохранить предыдущую ориентацию в значении, которое сохраняется на протяжении жизненного цикла.
edit: если вы хотите, чтобы ваши примеры работали, вы должны объявить их в манифесте.
put android: configChanges = "ориентация" в вашем манифесте под вашими действиями говорит андроиду, что активность будет обрабатывать изменения ориентации экрана.
Ориентация деятельности Fix
установить Mani-feast activity
android:screenOrientation="portrait"
Или
android:screenOrientation="landscape"