Android меняет пейзаж, даже когда setOrientation установлен только на портрет - PullRequest
0 голосов
/ 12 апреля 2020

Я установил

android:configChanges="orientation"
android:screenOrientation="portrait"

В манифесте, и он работает хорошо ... до появления клавиатуры. Когда клавиатура отображается, вы можете изменить ориентацию на альбомную, и мое веб-представление обновит sh всего приложения, заставив пользователя снова войти в систему. Я не хочу (или не нуждаюсь) в сохранении, только блокирую все функции, которые могут обновлять sh приложение при изменении ориентации. Мне не нужно или не нужно, чтобы приложение могло включать ландшафт. Он полностью пригоден только для портрета и предназначен для него.

Предполагается, что android:configChanges="orientation" сообщает android, что приложение позаботится об ориентации, а android:screenOrientation="portrait" блокирует телефон для перехода в ландшафтный режим. при запуске приложения, но клавиатура, кажется, переопределяет эту конфигурацию.

На данный момент я не могу понять, как добиться этого обходного пути,

спасибо

Решено:

Я попробовал android: configChanges = "direction | screenSize | screenLayout | keyboardHidden"

и теперь это работает. Я нашел эту строку в документации , но на первый взгляд я подумал, что мне, возможно, придется обрабатывать отображение / скрытие клавиатуры после установки keysHidden в configChanges, но с этими параметрами она работает нормально, клавиатура появляется, когда пользователь взаимодействует с поле ввода, но оно не может отображаться в альбомной ориентации или превратить приложение в альбомную. Я также установил screenSize и screenLayout, как рекомендует документация, связанная с Avobe.

Я отмечу этот вопрос как решенный, когда смогу. Спасибо

1 Ответ

0 голосов
/ 12 апреля 2020

сохранить состояние.

private static final String STATE_COUNTER = "counter";

   private int mCounter;
private ArrayList<Item> mItems;


@Override
protected void onSaveInstanceState(Bundle outState) {
// Make sure to call the super method so that the states of our views are saved
    super.onSaveInstanceState(outState);
// Save our own state now
    outState.putInt(STATE_COUNTER, mCounter);
// Save our own state now
outState.putSerializable(STATE_ITEMS, mItems);
}

затем восстановить состояние снова

private static final String STATE_COUNTER = "counter";

private TextView mCounterTextView;
private int mCounter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

// If we have a saved state then we can restore it now
    if (savedInstanceState != null) {
        mCounter = savedInstanceState.getInt(STATE_COUNTER, 0);
    }

// Display the value of the counter
    mCounterTextView = (TextView) findViewById(R.id.counter_text);
    mCounterTextView.setText(Integer.toString(mCounter));

...
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt(STATE_COUNTER, mCounter);
}

надеюсь, вы найдете ответ.

...