Изменение ориентации Android - PullRequest
5 голосов
/ 06 января 2011

Мое приложение с вкладками не отображает представление с изменением ориентации.

Я добавил

android:configChanges="keyboardHidden|orientation"

к действию основной вкладки и к каждому действию в манифесте.

Я добавил к каждому виду деятельности этот метод:

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.active_alt);
    mColorLegendBtn = (Button) findViewById(R.id.colorbtn);
    mStatusView = (TextView) findViewById(R.id.celltitle1);
    TextView mStatusView1 = (TextView) findViewById(R.id.celltitle2);
    mStatusView1.setText(mStatusView1.getText()+"testcase1");
    mStatusView.setText(mStatusView.getText()+"testcase");
    initUI();
}

public void initUI() {
    l1 = (ListView) findViewById(R.id.ListView01);
    EfficientAdapter efficientAdapter = new EfficientAdapter(mContext);
    l1.setAdapter(null);
    l1.setAdapter(efficientAdapter);
}

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

Чего мне не хватает?

Ответы [ 4 ]

5 голосов
/ 17 марта 2011

У меня была именно эта проблема. После долгих проб и ошибок я, в конце концов, решил эту проблему, внеся однострочное изменение в манифест.

Хитрость в том, чтобы добавить

android:configChanges="orientation|keyboardHidden"

до вашей записи TabActivity в манифесте. Оставьте все детские занятия в покое. Даже не беспокойтесь о реализации onConfigurationChanged(), даже в TabActivity.

Я не знаю, как и почему это работает, но эффект состоит в том, что макет обновляется, и вкладки, и дочерний контент деятельности корректно перерисовываются в новой ориентации.

1 голос
/ 26 сентября 2012

В Mono для Android с целевым API, превышающим 13 Я обнаружил, что строка, которая будет идти внутри пространства имен, но вне Activity class:

[Activity (Label = "Viewer",  ConfigurationChanges = ConfigChanges.Orientation|ConfigChanges.ScreenSize)]

приведет к срабатыванию OnConfigurationChanged(), хотя изменение манифеста не имело.

1 голос
/ 25 апреля 2011

С успехом я обнаружил, что лучший способ изменения экрана с наибольшим контролем - это сделать ваш макет xml для ландшафтного режима в отдельном xml следующим образом:

res/layout-land/youractivity.xml

Использование / layout / и / layout-land / для ваших макетов, а также Грэма Борланда - золотой ответ.

  <activity android:name=".MainActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="unspecified"
                  android:launchMode="standard"
                  android:configChanges="orientation|keyboardHidden"
                  >

приведенный выше фрагмент заставил мою работу. :)

о-о, я верю, что "неопределенное" - это то, что позволяет системе делать то, что она считает лучшим ...

Удачи!

0 голосов
/ 06 января 2011

Может ли быть так, что ваш макет не работает в альбомном / портретном режиме?Попробуйте запустить приложение после поворота, проверьте, дает ли это те же результаты.Если так: исправьте ваш макет: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...