2012-11-06 11 views
24

असल में मुझे onWindowFocusChanged() की कार्यक्षमता की आवश्यकता है लेकिन Fragment पर। onWindowFocusChanged() श्रोता वास्तव में दुर्भाग्य से टुकड़ों के लिए उपलब्ध नहीं है, इसलिए मुझे यकीन नहीं है कि क्या करना है।पता लगाएं कि एक टुकड़ा कब खींचा जाता है?

ऐसा करने का कोई तरीका?

उत्तर

54

View के माध्यम से टुकड़े "खींचे गए" हैं, आप onCreateView() में वापस आते हैं। आप उसमें ईवेंट हैंडलर का उपयोग कर सकते हैं। आमतौर पर, यदि कोई आदेश है जिसे चलाने के लिए View पहली बार देखने की आवश्यकता है, तो आप इसे Runnable में असाइन कर सकते हैं और इसे पर post() विधि से जोड़ सकते हैं।

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

सही काम करने लगता है! मैं इसे सही उत्तर के रूप में चुनने से पहले इसे कुछ परिदृश्यों के माध्यम से चलाने जा रहा हूं। – VicVu

+2

मुझे यह भी ध्यान रखना चाहिए (लगभग दो महीने बाद), यह चाल किसी भी दृश्य पर काम करती है। न केवल फ्रैगमेंट के माध्यम से पोस्ट किए गए, इसलिए यदि आप एक दृश्य int को बढ़ाते हैं तो उदाहरण के लिए गतिविधि। यह काम करेगा। – DeeV

+1

हां! मैं इसे सब कुछ देखने के लिए उपयोग कर रहा हूं, मैं इसे देख रहा हूं, यह बहुत अच्छा है। – VicVu

-3

OnWindowFocusChanged एक दृश्य के ड्राइंग के बारे में जानकारी प्रदान नहीं करता है (या नहीं देखा) हर उस दृश्य के अपने टुकड़ा में ध्यान केंद्रित किया जा सकता है पर OnWindowFocusChanged को लागू करें। छद्म कोड में:

Fragment implements OnWindowFocusChanged{ 

onCreate(){ 

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

} 

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

} 
0

onWindowFocusChanged (बूलियन hasFocus) विधि गतिविधि में कहता है, लेकिन जब टुकड़ा drawns हम के माध्यम से जांच कर सकते हैं विधि onActivitycreated()। इस पोस्ट को जांचें https://stackoverflow.com/a/32819850/2732632

संबंधित मुद्दे