Ресурсы (некоторые файлы css и js) не загружены в браузер Safari (устройства iphone)

Я решил проблему с onconfigurationchanged. Хитрость заключается в том, что в соответствии с жизненным циклом активности андроида, когда вы явно называете намерение (намерение камеры или любое другое); действие приостанавливается, и в этом случае вызывается onsavedInstance. При вращении устройства в другое положение, отличное от того, в котором активна активность; выполнение операций фрагмента, таких как фиксация фрагмента, вызывает исключение из нелегального состояния. Есть много жалоб на это. Это что-то вроде управления жизненным циклом активности Android и правильных вызовов методов. Чтобы решить эту проблему, я сделал следующее: 1-Переопределите метод onsavedInstance вашей активности и определите текущую ориентацию экрана (портретную или альбомную), а затем установите ориентацию экрана перед ее приостановкой активности. таким образом, вы заблокируете поворот экрана для своей активности, если он был повернут другим. 2, затем переопределите метод onresume активности и настройте режим ориентации теперь на датчик, чтобы после вызова метода onsaved он будет вызывать еще один раз при настройке для правильного вращения.

Вы можете копировать / вставьте этот код в свою деятельность, чтобы справиться с этим:

@Override
protected void onSaveInstanceState(Bundle outState) {       
    super.onSaveInstanceState(outState);

    Toast.makeText(this, "Activity OnResume(): Lock Screen Orientation ", Toast.LENGTH_LONG).show();
    int orientation =this.getDisplayOrientation();
    //Lock the screen orientation to the current display orientation : Landscape or Potrait
    this.setRequestedOrientation(orientation);
}

//A method found in stackOverflow, don't remember the author, to determine the right screen orientation independently of the phone or tablet device 
public int getDisplayOrientation() {
    Display getOrient = getWindowManager().getDefaultDisplay();

    int orientation = getOrient.getOrientation();

    // Sometimes you may get undefined orientation Value is 0
    // simple logic solves the problem compare the screen
    // X,Y Co-ordinates and determine the Orientation in such cases
    if (orientation == Configuration.ORIENTATION_UNDEFINED) {
        Configuration config = getResources().getConfiguration();
        orientation = config.orientation;

        if (orientation == Configuration.ORIENTATION_UNDEFINED) {
        // if height and widht of screen are equal then
        // it is square orientation
            if (getOrient.getWidth() == getOrient.getHeight()) {
                orientation = Configuration.ORIENTATION_SQUARE;
            } else { //if widht is less than height than it is portrait
                if (getOrient.getWidth() < getOrient.getHeight()) {
                    orientation = Configuration.ORIENTATION_PORTRAIT;
                } else { // if it is not any of the above it will defineitly be landscape
                    orientation = Configuration.ORIENTATION_LANDSCAPE;
                }
            }
        }
    }
    return orientation; // return value 1 is portrait and 2 is Landscape Mode
}

@Override
public void onResume() {
    super.onResume();
    Toast.makeText(this, "Activity OnResume(): Unlock Screen Orientation ", Toast.LENGTH_LONG).show();
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} 
0
задан Moses 28 February 2019 в 09:28
поделиться