8

मुझे एक अजीब समस्या है जिसमें मुझे सामना करना पड़ा: GetActivity() विधि हमेशा खंड के अंदर शून्य लौटाता है। मैं इसे अटैच() और ऑनक्रेट व्यू() के बाद कॉल कर रहा हूं।एंड्रॉइड getActivity() हमेशा टुकड़े के अंदर शून्य लौटाता है

यह टुकड़ा एक FragmentActivity() कि टुकड़े के ढेर में शामिल है अंदर रहता है, और जिस तरह से मैं इसे करने के लिए टुकड़ा जोड़ने है:

(यह कोड टुकड़ा गतिविधि की OnCreate() से बुलाया जा रहा है())

SmartFragment fragment; 
fragment = (SmartFragment) Fragment.instantiate(this, 
fragmentClassName, params);  
mStackOfFragments.add(fragment); 
FragmentTransaction trans = getSupportFragmentManager().beginTransaction(); 
trans.add(R.id.tabcontent, fragment); 
trans.addToBackStack(null); 
trans.commitAllowingStateLoss(); 

मुझे आशा है कि यह काफी स्पष्ट है

संपादित करें 1:

getActivity() करने के लिए कॉल:

012,
protected OnDoneListener nDoneListener = new OnDoneListener() { 

    @Override 
    public void OnDone(final int counter, final String name) { 


     if (getActivity() != null) 
      ((TabActivity) getActivity()).RunOnUiThread(new Runnable() { 

... ...

इसके लिए कॉलबैक एक अलग वर्ग से बुलाया जा रहा है।

संपादित करें 2:

class MemoryManager() 
{ 

    private OnDoneListener nDoneListener; 

    public void setOnDoneListener(OnDoneListener onDoneListener) 
    { 
    this.onDoneListner = onDoneListener; 
    } 

    public void updateUiOnRequestFinish() 
    { 
     onDoneListener.onDone(); 
    } 

} 

MemoryManaget ही() एक अलग कॉलबैक से updateUiOnRequestFinish करने के लिए कॉल

संपादित करें 3:

FragmentManager लॉग हैं:

04-08 18:44:05.950: V/FragmentManager(16280): Commit: BackStackEntry{41f9bd60} 
`04-08 18:44:05.950: D/FragmentManager(16280): mName=null mIndex=-1 mCommitted=false 
04-08 18:44:05.950: D/FragmentManager(16280): Operations: 
04-08 18:44:05.950: D/FragmentManager(16280):  Op #0: ADD FragmentMyProfile{41f9bc20 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): Setting back stack index 0 to BackStackEntry{41f9bd60} 
04-08 18:44:05.950: V/FragmentManager(16280): Run: BackStackEntry{41f9bd60 #0} 
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting in BackStackEntry{41f9bd60 #0} by 1 
04-08 18:44:05.950: V/FragmentManager(16280): Bump nesting of FragmentMyProfile{41f9bc20 id=0x7f070126} to 1 
04-08 18:44:05.950: V/FragmentManager(16280): add: FragmentMyProfile{41f9bc20 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): Allocated fragment index FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): moveto CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:05.950: V/FragmentManager(16280): moveto ACTIVITY_CREATED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:05.990: V/FragmentManager(16280): moveto STARTED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
04-08 18:44:06.030: V/FragmentManager(16280): moveto RESUMED: FragmentMyProfile{41f9bc20 #0 id=0x7f070126} 
` 

और मुझे यह ठीक लग रहा है। तो मैं अनुमान लगा रहा हूं कि यह बग कॉलबैक से getActivity() को कॉल करने के तरीके से संबंधित है।

+1

यह केवल अजीब है अगर आप फ्रैगमेंट लाइफसाइकिल से परिचित नहीं हैं ... http://developer.android.com/guide/components/fragments.html#CoordinatingWithActivity ... इस पैराग्राफ से पहले कुछ पंक्तियां भी जांचें ... हैं आप गतिविधि कंडक्टर में गतिविधि के लिए टुकड़ा जोड़ रहे हैं? – Selvin

+0

क्या आप कोड को एक्टिविटी() लाइन के साथ डाल सकते हैं? –

+0

सेल्विन: आपकी टिप्पणी से यह संकेत मिलता है कि यह एक मामूली मुद्दा है, ठीक है, मुझे उम्मीद है कि आप सही हैं, लेकिन शायद आप नहीं। मुझे यह लिंक और इसकी सामग्री पता है और अभी भी यह समस्या है – Nativ

उत्तर

7

यह समस्या है, तो अपने "android.support.v4.app उपयोग कर रहे हैं" android.app.Fragment "या" android.support.v4.app.Fragment "

का इस्तेमाल किया getActivity() के लिए हो सकता है। टुकड़ा "अगर आप" android.app.Fragment "या इसके विपरीत से getActivity का उपयोग नहीं कर रहे हैं तो आपको समीक्षा करने की आवश्यकता है।

+0

इसने मेरी समस्या हल की। मैं GetAupportActivity() को getActivity() के बजाय उपयोग करता हूं क्योंकि मैं होलो हर जगह का उपयोग कर रहा हूं। अभी भी पता नहीं क्यों मिलता है जब एक्टिविटी() टुकड़ा पहली बार लोड होने पर काम कर रहा था, लेकिन जब मैं दूर नेविगेट करता था और फिर वापस ... – speedynomads

+0

आप सही आदमी थे! बहुत बहुत धन्यवाद – Nativ

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