2010-01-22 10 views
10

मैं उप-गतिविधि को तुरंत चालू नहीं कर सकता।नया इंस्टेंस विफल: <init>

01-22 15:14:38.906: DEBUG/dalvikvm(411): newInstance failed: no <init>() 

यह Dalvik में लाइन है कि कि logcat उत्पन्न करता है: logcat में मैं इस लाइन को देखते हैं।

/* 
* public T newInstance() throws InstantiationException, IllegalAccessException 
* 
* Create a new instance of this class. 
*/ 
static void Dalvik_java_lang_Class_newInstance(const u4* args, JValue* pResult) 
... 
    /* find the "nullary" constructor */ 
    init = dvmFindDirectMethodByDescriptor(clazz, "<init>", "()V"); 
    if (init == NULL) { 
     /* common cause: secret "this" arg on non-static inner class ctor */ 
     LOGD("newInstance failed: no <init>()\n"); 
     dvmThrowExceptionWithClassMessage("Ljava/lang/InstantiationException;", 
      clazz->descriptor); 
     RETURN_VOID(); 
    } 

यहां एक कार्रवाई है जो मैं टाइमर हैंडलर में गतिविधि को सक्रिय करने के लिए करता हूं।

// move on to Activation 
// ePNSplash is this activity a splash screen 

Intent i = new Intent (ePNSplash.this, Activation.class); 
startActivity (i); 

गतिविधि है कि मैं शुरू करने के लिए कोशिश कर रहा हूँ गतिविधि ऊपर 2 एक्सटेंशन है

यहाँ पहले विस्तार

public abstract class AndroidScreen extends Activity { 
    .... 

public AndroidScreen (String title, AndroidScreen parent, AndroidScreen main) 
{ 
    super(); 

    myGlobals = Globals.getGlobals(); 

    myGlobals.myLogger.logString("AndroidScreen: 001"); 

    myParent = parent; 
    myMainScreen = main; 
    myTitle = title; 
} 

यह केवल निर्माता है, जो हिस्सा है कि हो रहा है है समस्या। यहां दूसरा एक्सटेंशन और कक्षा है जिसे मैं तुरंत चालू करने की कोशिश कर रहा हूं।

public class Activation extends AndroidScreen { 

public Activation (String title, AndroidScreen parent, AndroidScreen main) 
{ 
    super (title, parent, main); 
} 

मैं बिल्कुल उलझन में हूँ, मैं एक निर्माता है, मुझे यकीन है कि मैं अपने सुपर कंस्ट्रक्टर्स फोन बनाने के लिए, क्या संभवतः गलत हो सकता है?

धन्यवाद

जूलियन

उत्तर

20

dalvikvm के एक शून्य तर्क निर्माता की तलाश में (कि 1 तर्क के लिए क्या वे "nullary" मतलब है, ऐसे 2 तर्कों के लिए "बाइनरी", "एकल" के रूप में, यह 0 तर्कों के लिए "नलिका")।

आपके द्वारा दिखाए गए स्निपेट में, आपके पास केवल तीन-तर्क निर्माता हैं। यह अच्छा नहीं है: आपको कोई तर्क नहीं दिया जाएगा, इसलिए आपको शून्य-तर्क कन्स्ट्रक्टर की आवश्यकता है।

+0

यह काम करता है, धन्यवाद। – Bodger

+2

मेरा मुद्दा एक इरादा सेवा था जो अमूर्त वर्ग एक डिफ़ॉल्ट कन्स्ट्रक्टर को परिभाषित नहीं करता है, केवल तर्क के साथ एक कन्स्ट्रक्टर (स्ट्रिंग नाम)। नतीजतन, मैं एक डिफ़ॉल्ट कन्स्ट्रक्टर को लागू करने पर संकलक द्वारा भ्रमित था और इसे छोड़ दिया। जब मैंने इसे MyIntentService() {सुपर (शून्य) के रूप में जोड़ा; } यह सब काम किया। यह इतना काउंटर सहज था - इस अपवाद पर q और a के लिए धन्यवाद। – mobibob

+0

जब यह काम करता था मैं अपनी आंखों पर विश्वास नहीं कर सकता !!! मैंने तत्काल और पूर्व-फुले हुए टुकड़े और एक शून्य तर्क जोड़ा जब मैंने इसे पढ़ा और यह काम किया। मैं इसे और भी ऊपर उठा सकता था! –

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