2012-02-28 37 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