2012-11-06 20 views
24

Về cơ bản, tôi cần chức năng của onWindowFocusChanged() nhưng trên Fragment. Trình nghe số onWindowFocusChanged() không thực sự khả dụng với các đoạn không may, vì vậy tôi không chắc chắn nên làm gì.Phát hiện khi một mảnh được rút ra?

Bất kỳ cách nào để thực hiện việc này?

Trả lời

54

Các mảnh vỡ được "rút" qua View bạn quay lại trong onCreateView(). Bạn có thể sử dụng các trình xử lý sự kiện trong đó. Thông thường, nếu có lệnh cần được chạy khi trước tiên, View xuất hiện, bạn có thể gán nó trong một Runnable và đính kèm nó vào View qua phương thức post().

getView().post(new Runnable() { 
    @Override 
    public void run() { 
     // code you want to run when view is visible for the first time 
    } 
    } 
) 
+2

Dường như làm việc đúng! Tôi sẽ chạy nó thông qua một số kịch bản trước khi tôi chọn điều này như là câu trả lời đúng. – VicVu

+2

Tôi cũng nên lưu ý (gần hai tháng sau), mẹo này hoạt động trên mọi Chế độ xem. Không chỉ những người được đăng thông qua Fragment, vì vậy, nếu bạn thổi phồng View int he Activity chẳng hạn. Điều này sẽ làm việc. – DeeV

+1

Có! Tôi đã sử dụng điều này cho tất cả các mánh lới quảng cáo xem ít tôi đã diễn ra, tuyệt vời của nó. – VicVu

-3

OnWindowFocusChanged không cung cấp thông tin về cách vẽ một view (hoặc không nhìn thấy) Thực hiện OnWindowFocusChanged trên mỗi điểm cho rằng có thể có trọng tâm trong Fragment của bạn. trong pseudo-code:

Fragment implements OnWindowFocusChanged{ 

onCreate(){ 

btn.OnWindowFocusChanged(this); 
editTxt.OnWindowFocusChanged(this); 
.... 

} 

public void OnWindowFocusChanged(boolean hasFocus){ 
// your fragment has focus 
} 

} 
0

onWindowFocusChanged (boolean hasFocus) phương pháp gọi trong hoạt động, nhưng khi drawns đoạn chúng ta có thể kiểm tra thông qua phương pháp onActivitycreated(). Kiểm tra bài đăng này https://stackoverflow.com/a/32819850/2732632

Các vấn đề liên quan