2011-01-06 107 views
5

我的選項卡式應用程序不會重新顯示方向更改的視圖。Android方向更改

我加入

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); 
} 

上啓動,標籤,列表,按鈕和TextView的正確顯示。 當我在模擬器中更改方向時,只有選項卡不顯示任何其他窗口小部件,屏幕顯示爲黑色。

我錯過了什麼?

+0

我遇到了一個非常類似的問題,並找到了不同的解決方法。它表現在幾個不同的情況。看到我的問題[這裏](http://stackoverflow.com/questions/8103639/android-orientation-change-causes-imageview-to-dissapear)。 – 2011-11-12 10:11:47

回答

0

難道只是您的佈局不能在橫向/縱向模式下工作?旋轉後嘗試啓動你的應用程序,檢查是否給出了相同的結果。如果是這樣的:修復你的佈局:D

+0

該應用程序在兩個方向工作。在任一方向改變方向時,它都不會重新顯示。 – Tori 2011-01-06 15:20:57

+0

標籤...你是否使用tabactivity和自己的活動標籤?你是否也添加了代碼到你的tabactivity?我會添加一些日誌記錄來檢查什麼onconfigchanged函數被調用,什麼時候。 – Nanne 2011-01-06 15:28:06

+0

是的,我確實將onconfigchanged添加到了tabactivity中,並且通過日誌我可以看到在tab活動和正在顯示的活動中都調用了onconfigchanged。問題是沒有顯示視圖。 – Tori 2011-01-06 15:33:17

5

我有這個問題。經過多次試驗和錯誤之後,我最終通過對清單進行單行更改來解決此問題。

訣竅是

android:configChanges="orientation|keyboardHidden" 

添加到清單您TabActivity的條目。獨自留下所有的兒童活動。甚至不打擾執行,甚至不在TabActivity

我不知道如何或爲什麼這似乎工作,但效果是佈局刷新,並且標籤和子活動內容都在新的方向正確重繪。

1

隨着成功,我發現最好的方法有屏幕的變化與大多數控制是使景觀模式佈局XML在一個單獨的XML像這樣:使用/佈局/和/布圖設計

res/layout-land/youractivity.xml 

土地/你的佈局以及格雷厄姆博蘭德的答案是金黃的。

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

上面的代碼片段是使我的工作。 :)

喔我相信「未指定」是什麼使得系統能夠做什麼它認爲是最好的......

祝你好運!

1

MonoAndroid與目標API大於13我發現,這將大大的命名空間內,但Activity class線外:

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

導致的OnConfigurationChanged()觸發,即使改變清單有不。