2015-09-16 2 views
0

Я начинаю деятельность с startActivityForResult(), но после изменения orientatikn, и я возвращаюсь к методу onActivityResult(), код запроса не тот же. Я бы хотел использовать другую компоновку, если ориентация экрана находится в ландшафтном режиме. Я пробовал в манифесте конфигурацию с параметрами ориентации и screenSize, но если я использую это, макет не будет изменен на макет ландшафта. Я начал свою деятельность с requestCode = 0, но после изменения ориентации я увидел, что requestCode = 66357 или что-то в этом роде.Как справиться с изменением ориентации деятельности, чтобы не воссоздать активность?

+0

Вы используете фрагмент или диалог? – makata

+0

Простое мероприятие. – just

+1

Когда ориентация изменяется, активность воссоздается. Уже не то же самое! Таким образом, вам нужно передать requestCode onPause() или Destroy() с помощью намерения. – makata

ответ

0

вы можете объявить, что ваша деятельность обрабатывает само изменение конфигурации, которая не позволяет системе перезагружать деятельности.

В ваших AndriodMainfest.xml определяют configChanges

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

Затем в ResultActivity.java (что вы звоните, чтобы получить результат) определяют onConfigurationChanged()

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 

официальные link

0

Создайте два типа папок. «макет-земля» и «макет-порт». поместите требуемый xml в каталог с тем же именем.

+0

Я сделал это, но я не видел, чтобы был выбран макет земли. – just

+0

Объявление изменений конфигурации в манифесте не требуется. Вы можете сохранить его как «макет» по умолчанию и другую «макет-земля». – rKrishna

+0

Но после изменения ориентации и завершения действия она вернется к методу onActivityResult() с помощью другого requestCode. Как я должен справиться с этим? – just

-1

У вас есть два варианта:

A) Установите приложение не вращается.

B) Или признать, что мир не совершен и модифицировать приложение для обработки изменения конфигурации

+0

Предоставить код, а не предложение, и это скорее комментарий –