2012-02-28 1 views
0

Я видел ряд других вопросов по этому вопросу, но до сих пор ни один из ответов не устранил мою проблему. Я просто не хочу, чтобы моя деятельность воссоздавалась каждый раз, когда экран переориентировался. Из того, что я нашел, ниже должно работать:MonoDroid OnConfigurationChanged Not Firing

файл манифеста

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" android:versionCode="1"> 
    <application android:label="Service Portal"> 
    <activity android:name =".CallManagement" android:configChanges="orientation"></activity> 
    </application> 
    <uses-sdk android:minSdkVersion="10" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
</manifest> 

CallManagement.cs

public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig) 
    { 
     base.OnConfigurationChanged(newConfig); 
    } 

Я попытался изменить андроида: configChanges к "ориентации | keyboardHidden". Поскольку я нацелен на уровень API 10, предложение, которое я видел несколько раз, чтобы также включить «screenSize», не применяется.

Я поставил точку останова в пустоте OnConfigurationChanged, и она никогда не ловится, и OnCreate определенно продолжает работать. Что я делаю неправильно или я не понимаю, что должна делать эта функция?

ответ

0

Вы пробовали блокировку экрана в определенной ориентации?

<activity android:name="MyActivity" android:screenOrientation="landscape">. 

Я блокировки экрана программно, я не нашел макет так хорошо, как запрашивающее ориентацию, а затем запирая ориентацию с предоставленной междунар.

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

+0

Я определенно не хочу блокировать ориентацию экрана. Пользователи должны иметь возможность взаимодействовать с приложением в любой ориентации, наиболее удобной. Самые большие проблемы, с которыми я столкнулся, - это Dialogs и динамический Spinner. В OnCreate spinner получает ArrayAdapter, параметры которого изменяются в зависимости от других факторов. Если я выберу элемент в позиции 1 и переориентируюсь, в OnCreate он будет строить список опций, основанных на новой ситуации во время OnCreate, и теперь то, что находится в позиции 1, не является тем, что было там. – jmease

+0

Итак - можете ли вы сохранить выбор на основе некоторого уникального идентификатора параметра (имя или хеш), а затем выбрать, какой объект соответствует вашему сохраненному значению, в on-create? Я очень согласен с вами в том, что на экране нет никакого контроля над приложением, но опять же, это означает «особенность», а не ошибка. – Noah

+0

Не совсем. Элемент, выбранный в ландшафте, может даже не быть опцией в прядильщике, когда поворачивается портрет, а ArrayAdapter восстанавливается в onCreate. Параметры в spinner предназначены для управления рабочим процессом, поэтому в зависимости от того, где пользователь в настоящее время, параметры изменяются. У меня есть выбор пользователя, как только элемент выбран в счетчике. Наверное, я могу просто заставить вращение выбрать общий элемент «Выбрать» при переориентации. Но это не помогает в диалоговом вопросе? – jmease