2011-12-15 22 views
34

मेरे पास 2 क्रियाएँ: एक बटन जो 2 गतिविधि की शुरूआत पर पहली गतिविधि उपयोगकर्ता क्लिक करता है। दूसरी गतिविधि सभी काम करता है।नहीं बुलाया onCreate

मैं दूसरी गतिविधि को निम्नानुसार लॉन्च करता हूं जो ऑनक्लिक लिस्टनर इनर क्लास के अंदर है और मैंने इसे स्पष्ट रूप से (FirstActivity.this, Simple.Class) के साथ कॉल करने का प्रयास किया है, लेकिन एक ही चीज होती है।

Intent test = new Intent(arg0.getContext(),Simple.class); 
    startActivity(test); 

एमुलेटर पर, मैं स्क्रीन अपने 2 गतिविधि बुला की तरह पर ले जाने को देखने, लेकिन सभी मैं एक काली स्क्रीन है, लेकिन कुछ भी नहीं मेरी लेआउट से भरी हुई है। मैंने लॉगकैट देखा और मुझे कुछ बाइंडर थ्रेड असफल संदेश दिखाई देता है। यह मेरी 2nd गतिविधि से onCreate समारोह है, लेकिन मैं मुझे दिखा रहा है कि लॉग कार्यों कहा जाता था या तो स्क्रीन या logcat से कोई परिणाम नहीं मिलता है:

public void onCreate(Bundle savedState) 
    { 
     Log.d("SimpleActivity","OnCreate Started"); 

     super.onCreate(savedState); 
    setContentView(R.layout.simple); 

     Log.d("SimpleActivity","OnCreate Ended"); 
    } 

नोट: मैं OnCreate में आधार निर्माता कहा जाता है() उपरोक्त मेरे कोड में super.onCreate (savedState) के साथ।

+0

कोड के कुछ और पोस्ट पोस्ट करें ताकि हम देख सकें कि arg0 क्या है। आपको शायद जो भी हो, उसका उपयोग नहीं करना चाहिए। संदर्भ के रूप में प्रयोग करें YourActivity.this नए इरादे को पारित करने के लिए। – FoamyGuy

+0

आप इस समाधान हो गया? क्या आपके पास उस दृश्य के अंदर एक टुकड़ा है जिसे तुरंत तत्काल किया जा रहा है? –

उत्तर

123

मेरे लिए क्या हुआ मैं गलत onCreate विधि अधिभावी कर रहा था। मैं public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) अधिभावी रहा था जब मैं वास्तव में protected void onCreate(@Nullable Bundle savedInstanceState) ओवरराइड करने के लिए की जरूरत है। शायद यह किसी की मदद कर सकता है!

+13

धन्यवाद, वह वास्तव में था! – mrpeardotnet

+11

3 साल अभी भी मूर्खतापूर्ण गलतियां कर रहे हैं ..: डी –

+1

इस बेवकूफ बग ने मुझे कम से कम एक घंटे का समय निकाला ... अरे, 'सार्वजनिक शून्य पर तैयार करें'! –

0

आप onCreate @Override और उस में super.onCreate() जोड़ने

@Override 
public void onCreate(Bundle savedState) 
{ 
    super.onCreate(savedState); 

    Log.d("SimpleActivity","OnCreate Started"); 
    setContentView(R.layout.simple); 
    Log.d("SimpleActivity","OnCreate Ended"); 
} 
+5

आपके कोड नमूने में यह दो बार "super.onCreate (savedState) कहता है;" अब .. –

0

आप super.onCreate(savedState) विधि कॉल करने की जरूरत है चाहिए। Activity doc पर एक नजर डालें।

public void onCreate(Bundle savedState) 
    { 
    super.onCreate(savedState); 
    } 
1

ऐसा नहीं है कि onCreate, नहीं कहा जाता हो जाता है, तो गतिविधि नष्ट कर दिया गया कभी नहीं किया है, अगर किसी कारण एक गतिविधि के आसपास लटका हुआ है, अगली बार के लिए अपने instantiated यह निर्मित नहीं होती है, लेकिन फिर से शुरू ...

संभव है

कम से कम यही है कि मैं अपने कोड में अभी से निपट रहा हूं ... क्रियाकलापों का जीवन चक्र एक अच्छा तार्किक स्पष्टीकरण प्रतीत होता है .. हालांकि 99% समय पर मैं भरोसा करता हूं प्रारंभ करने पर क्रेट को बुलाया जाता है और यह मुझे असफल नहीं करता है ....

संपादित करें: और निश्चित रूप से अपने क्योंकि मैं बुला नहीं कर रहा था खत्म() जब acti बाहर निकलने vity। रवींद्र।

+0

यह उत्तर मुझे मेरी समस्या को ठीक करने के लिए एक सुराग देता है। मेरे मामले में, ऑब्जेक्ट ध्वज की स्थिति पर गतिविधि खत्म होती है और इसे हैंडलर के चलने योग्य कोड में रखा जाता है। लेकिन यह वस्तु चलाने योग्य होने से पहले शून्य हो जाती है। उसके लिए धन्यवाद। – jrhamza

0

यह इस कुछ मुद्दे से संबंधित नहीं है, लेकिन यह भी इस गतिविधि मैनिफ़ेस्ट फ़ाइल में घोषित नहीं किया गया है हो सकता है)

0

सावधान रहें कि आपके विधि AppCompatActivity या गतिविधि के अंतर्गत आता है, तो।

यह है कि आप अपने क्लास

करने के लिए लागू करने के लिए है कि आप जीवन चक्र या किसी ओवरराइड तरीकों को जोड़ना चाहते हैं, मैं CTRL+O दबाएँ या Code > Override methods करने के लिए आप की सिफारिश और वहाँ आप देख सकते हैं, जहां विधि

अंतर्गत आता है

Screenshot for illustrative purposes - Android Studio's "Methods to Override" dialog

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