2013-04-24 98 views
7

我正在開發應用程序,我需要在ListView中顯示建議,並且在更改方向時我希望將該列表隱藏起來。但它仍然出現在屏幕上。我試過這個: 1)獲取列表適配器並清除它。 2)設置方向改變前的可見性GONE(但它在onCreate後變得可見) 3)在onCreate中設置可見性GONE,但列表仍然出現在屏幕上(我認爲也許android保存舊列表,因爲我初始化列表視圖再次,它看起來像空的,但在屏幕上的列表是不)。 那麼,我如何擺脫名單?如何在Android中不保存視圖狀態?

+3

看一看['View.setSaveEnabled(布爾ENAB led)'](http://developer.android.com/reference/android/view/View.html#setSaveEnabled(boolean))方法 – 2013-04-24 13:03:43

回答

13

而不是使用什麼樣的全球機器人的:configChanges影響活動中的所有意見,有什麼關於使用方法setSaveEnabled(布爾值)或等效的xml屬性android:saveEnabled

控制是否啓用保存此視圖的狀態(即是否調用其onSaveInstanceState()方法)。

如果將其設置爲false,則在更改方向時應始終返回默認狀態,因爲其狀態不會保存。

你可以,例如,把這個佈局文件:

<ListView 
    .... 
    android:visibility="invisible" 
    android:saveEnabled="false"> 
</ListView> 

,然後能見度設置爲可見,當你開始輸入。或者,如果您希望在onCreate方法中提供可見性和方法setSaveEnabled

我試着用一個簡單的ListView和一個按鈕將可見性更改爲true。在旋轉的ListView成爲invisibile(默認狀態)

還要注意的是:

此標誌只能禁用此觀點的儲蓄;任何子視圖可能仍然保存其狀態。

所以你應該擁有的onStop()或你想,但如果即使你不這樣做,ListView控件仍然是無形的旋轉

來源任何方法在清除列表:

1
@Override 
protected void onSaveInstanceState(Bundle outState) { 
} 

將此函數覆蓋到您的活動中,而不是調用「超級」方法!

或指定方向進入清單:

<activity 
    android:name="com.blabla" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:screenOrientation="portrait" > 
</activity> 
1

Android系統調用它的onCreate()在設備朝向改變你的actiivty的方法。添加configchanges在清單的活動條目,如果你不希望與方向的變化再次創建活動

<activity 
     android:name=".MyActivity" 
     android:configChanges="keyboardHidden|orientation" 
     />