Исключения изменения ориентации Android

1

Мне сложно работать с ориентацией экрана на Android. У меня есть активность, которая фиксирует подпись после того, как пользователь нарисовал свою подпись на устройстве. И для этого действия я передаю разреженный объект, и я получаю его в oncreate. Когда активность меняет ориентацию, иногда активность не может получить разрешаемый объект и дает исключение. Я пробовал использовать статический объект для объекта-патчи, но не использовал его. Я попробовал метод statesanceinstance state и методы onRetainNonConfigurationInstance.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.signature_capture_view);
    Bundle bundle = getIntent().getExtras(); 
    info = bundle.getParcelable("info");
    logo= (Bitmap) bundle.get("logo");
}

И мой метод состояния экземпляра save выглядит следующим образом:

@Override
 protected void onSaveInstanceState(Bundle outState) {
 outState.putParcelable("info", info);
 super.onSaveInstanceState(outState);
 }

В результате изменения метода onconfiguration я вызываю метод setcontentview для установки нового макета.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    setContentView(R.layout.signature_capture_view);
    super.onConfigurationChanged(newConfig);
}

Иногда, когда ориентация изменяется, исключение из памяти происходит из метода setcontentview.

Любая помощь будет принята с благодарностью. Заранее спасибо.

  • 0
    Привет, Нала, почему ты не исправляешь ориентацию экрана с помощью Android: screenOrientation = "Portrait"
  • 0
    Привет Дипак, мне также нужен ландшафтный режим.
Теги:

4 ответа

0
Лучший ответ

Наконец-то я нашел ответ на свой недостающий объем памяти. В моем представлении графического чертежа я не проверял растровое изображение в представлении для нуля, и каждый раз, когда устройство меняет ориентацию, он создает растровое изображение внутри представления. И он генерирует OOM. Таким образом, я вставил нулевую проверку для растрового изображения, и ядро ​​исчезло. Спасибо за быстрые ответы ребята.

2

Попробуйте установить атрибуты android: configChanges в файле AndroidManifest.xml:

  <activity android:name=".MyActivity"
                  android:label="@string/app_name"
                  android:configChanges="orientation|keyboardHidden">

И если вы хотите, чтобы ваше приложение было исправлено, чтобы открыть его в портретном или в ландшафтном режиме, добавьте android: screenOrientation внутри тега активности:

   <activity android:name=".MyActivity"
              android:label="@string/app_name"
              android:configChanges="orientation|keyboardHidden"
              android:screenOrientation="portrait">
  • 0
    Спасибо за ответ paresh, мне нужна альбомная ориентация для моего приложения.
1

если вы меняете представление в альбомной ориентации/портрет, вы должны выполнить следующие шаги, чтобы устранить ошибку в памяти.

  • установите это в манифесте в теге активности

андроид: configChanges = "ориентация"

  • в Anctivity put

public void onConfigurationChanged (Конфигурация newConfig) {

    super.onConfigurationChanged(newConfig);

    this.recreate();
}
0

Попробуйте установить это в манифесте тега активности для ошибки из памяти:

android:configChanges="orientation"
  • 0
    Привет Ката, у меня уже есть этот фрагмент кода в моем манифесте.
  • 0
    Это может звучать немного глупо, но вы можете сохранить свои данные в базе данных sqllite ...

Ещё вопросы

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