Требуется фокус на Android

1

Итак, у меня есть веб-представление в действии

Мне нужно, чтобы он сохранял ориентацию так же, как тот, в котором находились устройства, когда пользователь открыл активность (поэтому, если LANDSCAPE, когда была открыта активность, → держите это!.. если PORTRAIT → сохраните это)

Так

  • не нужно XML декларация манифеста.. я не хочу, чтобы заставить конкретную ориентацию, просто чтобы открыть ее!

Эти два шага не делают ничего:

 public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(null);

или

public void onConfigurationChanged(Configuration newConfig) {
      newConfig.orientation = getResources().getConfiguration().orientation;
      super.onConfigurationChanged(newConfig);

Так идеи?

Теги:
orientation

4 ответа

0

Я не уверен, почему вы хотите реализовать эту функцию, но это должно работать:

  @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);
    }
}

С другой стороны, мне плохо, чтобы заставить такую ориентацию.

  • 0
    Webview (JS + HTML) будет выглядеть странно, если я не буду!
  • 0
    хорошо, хорошо ... дайте мне знать, если это работает для вас.
Показать ещё 1 комментарий
0

Вы должны прочитать о жизненном цикле деятельности андроидов. при повторном открытии операции создается новый экземпляр. Поэтому не было "предыдущей" ориентации. если вы хотите иметь ту же ориентацию, что и при приостановке действия, вы должны сохранить предыдущую ориентацию в значении, которое сохраняется на протяжении жизненного цикла.

edit: если вы хотите, чтобы ваши примеры работали, вы должны объявить их в манифесте.

0

put android: configChanges = "ориентация" в вашем манифесте под вашими действиями говорит андроиду, что активность будет обрабатывать изменения ориентации экрана.

0

Ориентация деятельности Fix

установить Mani-feast activity

android:screenOrientation="portrait"

Или

android:screenOrientation="landscape"
  • 0
    опять же, не хочу навязывать определенную ориентацию .. просто сохраняйте ту, с которой было создано действие!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню