2012-02-28 125 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 void中放置了一个断点,它永远不会捕获,OnCreate肯定会继续运行。我做错了什么或者我误解了这个功能应该做什么?

回答

0

你是否试过特定方向的屏幕锁定?

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

我锁屏编程,我还没有发现布局请求方向,然后锁定与所提供的INT方向为好。

如果您不想锁定屏幕,但希望活动在方向更改上正确调整大小,则可能会重新考虑您的设计。保存游戏状态,然后让Android重新创建活动被认为是动态屏幕的最佳做法。

+0

我绝对不想锁定屏幕方向。用户需要能够以任何方向最舒适的方式与应用进行交互。我遇到的最大问题是Dialogs和一个动态的Spinner。在OnCreate中,微调器被赋予一个ArrayAdapter,其选项根据其他因素而改变。如果我选择位置1中的项目并重新定向,则在OnCreate中,它会基于OnCreate中的新情况建立选项列表,现在位置1中的内容不是那里的内容。 – jmease 2012-03-01 19:11:12

+0

所以 - 你可以保存选择基于一些独特的选项ID(名称或哈希),然后选择哪个对象匹配您保存的值,在创造?我非常同意你的看法,即在屏幕更改上对应用程序的控制很少,但同样,它的意思是成为“功能”而不是bug。 – Noah 2012-03-02 21:10:06

+0

不是。在横向中选择的项目可能甚至不是微调器中的选项,并且在onCreate中重建ArrayAdapter。微调器中的选项旨在控制工作流程,因此根据用户当前的位置,选项会改变。只要在微调器中选中该项目,我就有用户的选择。我想我总是可以强制微调者在重定向时选择一个通用的“选择”项。但是这对对话的问题没有帮助? – jmease 2012-03-12 21:00:50