2013-04-24 21 views
7

Tôi đang phát triển ứng dụng, nơi tôi cần hiển thị đề xuất trong ListView và khi định hướng thay đổi, tôi muốn danh sách đó bị ẩn. Nhưng nó vẫn xuất hiện trên màn hình. Tôi đã thử điều này: 1) Nhận danh sách bộ chuyển đổi và xóa nó. 2) Đặt hiển thị GONE trước khi định hướng thay đổi (nhưng nó sẽ hiển thị trở lại sau khi onCreate) 3) Đặt hiển thị GONE in onCreate, nhưng danh sách vẫn xuất hiện trên màn hình (tôi nghĩ rằng có thể android lưu danh sách cũ, vì tôi khởi tạo danh sách xem một lần nữa và nó trông giống như sản phẩm nào, nhưng danh sách trên màn hình là không). Vì vậy, làm thế nào tôi có thể thoát khỏi danh sách?Làm thế nào để KHÔNG lưu trạng thái xem trong Android?

+3

hãy nhìn vào [ 'View.setSaveEnabled (enab boolean led) '] (phương pháp http://developer.android.com/reference/android/view/View.html#setSaveEnabled (boolean)) –

Trả lời

13

Thay vì sử dụng một cái gì đó toàn cầu như android: configChanges mà ảnh hưởng đến tất cả các quan điểm trong hoạt động, những gì về cách sử dụng phương thức setSaveEnabled (boolean) hoặc thuộc tính xml tương đương android: saveEnabled?

Kiểm soát xem trạng thái lưu trạng thái của chế độ xem này có được bật hay không (nghĩa là, phương thức onSaveInstanceState() của nó sẽ được gọi).

Nếu bạn đặt thành false, giá trị này luôn quay trở lại trạng thái mặc định khi thay đổi hướng vì trạng thái của nó sẽ không được lưu.

Bạn có thể, ví dụ, đặt này trong file layout:

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

và sau đó thiết lập khả năng hiển thị để hiển thị khi bạn bắt đầu nhập. Hoặc nếu bạn muốn đặt chế độ hiển thị và phương thức setSaveEnabled trong phương thức onCreate.

Tôi đã thử với một ListView đơn giản và một Nút thay đổi mức hiển thị thành đúng. Trên chuyển động quay ListView trở thành invisibile (trạng thái của nó mặc định)

Cũng lưu ý rằng:

Cờ này chỉ có thể vô hiệu hóa tiết kiệm của quan điểm này; bất kỳ chế độ xem con nào cũng có thể được lưu lại trạng thái của chúng.

vì vậy bạn nên có để xóa danh sách trong onStop() hoặc bất cứ phương pháp nào bạn muốn nhưng nếu ngay cả nếu bạn không, ListView sẽ vẫn được ẩn trên xoay

Nguồn:

1

ghi đè chức năng này vào hoạt động của bạn và không gọi phương thức 'siêu'!

hoặc chỉ định hướng vào manifest:

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

hệ thống Android gọi phương pháp actiivty của bạn về biến đổi định hướng của thiết bị onCreate() của nó. Thêm configchanges gia nhập hoạt động của bạn trong manifest nếu bạn không muốn tạo hoạt động của bạn một lần nữa về biến đổi định hướng

<activity 
     android:name=".MyActivity" 
     android:configChanges="keyboardHidden|orientation" 
     /> 
Các vấn đề liên quan