Как справиться с поворотом экрана на Android - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть ListActivity, которое я хочу показать, когда ориентация телефона - книжная, и у меня есть другая обычная активность, которую я хочу показать, когда пользователь поворачивает телефон в альбомный режим.

Код:

  public class ListActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_PORTRAIT) {
            //Do stuff
        }else if (this.getResources (). getConfiguration (). orientation == Configuration.ORIENTATION_LANDSCAPE) {
            Intent myIntent = new Intent(getApplicationContext(), AnotherActivity.class);
            startActivity(myIntent);
        }
    }
}

Этот подход работает, но имеет некоторые проблемы.Есть ли более правильный путь?Проблема этого метода заключается в том, что при повороте телефона и нажатии кнопки «назад» экран становится черным, поскольку телефон не поворачивается.Так следует ли мне выполнить вращение другим способом или каким-либо образом изменить кнопку возврата, чтобы пользователь не мог вернуться к предыдущему действию?

1 Ответ

1 голос
/ 14 ноября 2011

Это нормальный способ. Но это долго - 5 секунд ожидания.

Есть еще один способ:

зарегистрировать изменение ориентации как изменение конфигурации

A.

activity android:name=".SomeActivity" 
android:label="@string/app_name"
android:configChanges="orientation"

И обработать его как изменение конфигурации.

B.

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

    SetupActivity();
}
...