2017-04-01 6 views
5

मेरे पास है एक गतिविधि के रूप में निम्नानुसारसाथी वस्तुओं - एंड्रॉयड उन्हें गतिविधियों के रूप में रजिस्टर करने के लिए चाहता है

class DummyActivity : Activity() { 

    companion object { 
     @JvmStatic fun onNewIntent(context: Context): Intent { 
      val intent = Intent(context, DummyActivity.javaClass) 
      return intent 
     } 
    } 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 
    } 
} 

यह प्रकट में घोषित किया जाता है:

<activity android:name=".DummyActivity"/> 
</application> 

जब मैंने इसे शुरू करने के लिए कोशिश (?) , मैं मिलता है:

की वजह से: android.content.ActivityNotFoundException: स्पष्ट गतिविधि वर्ग ढूँढने में असमर्थ> {com.example.andrzejzuzak.visiondummyapp/com.e xample.andrzejzuzak.visiondummyapp.DummyActivity $ साथी}; क्या आपने इस गतिविधि को अपने AndroidManifest.xml में घोषित किया है? android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1794) android.app.Instrumentation.execStartActivity (Instrumentation.java:1512) पर android.app.Activity.startActivityForResult पर (Activity.java:3930) पर पर android.support.v4.app.BaseFragmentActivityJB.startActivityForResult (BaseFragmentActivityJB.java:50) atroid.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:79) android.app.Activity.startActivityForResult (गतिविधि। जावा: 38 9 0) atroid.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:859) android.app.Activity.startActivity (Activity.java:4213) atroid.app.Activity.startActivity (Activity.javavertis181) com.example.andrzejzuzak.visiondummyapp.MainActivity.onActivityResult (MainActivity.kt: 85 पर)) android.app.Activity.dispatchActivityResult (Activity.java:6456) android.app.ActivityThread.deliverResults (ActivityThread.java:3695) पर android.app.ActivityThread.handleSendResult (ActivityThread.java:3742 पर पर) android.app.ActivityThread.-wrap16 (ActivityThread.java) atroid.app.ActivityThread $ H.handleMessage (ActivityThread.java:1393) android.os.Handler.dispatchMessage (हैंडलर.जावा:102) atroid.os.Looper.loop (Looper.java:148) atroid.app.ActivityThread.main (ActivityThread.java:52417) जावा पर .lang.reflect.Method.invoke (मूल निवासी विधि)

मुझे क्या परेशान इस लाइन है:

स्पष्ट गतिविधि वर्ग {com.example.andrzejzuzak.visiondummyapp/com.example ढूँढने में असमर्थ। andrzejzuzak.visiondummyapp.DummyActivity $ Companion

क्या इसका वास्तव में मतलब है कि मुझे कहीं कंपेनियन ऑब्जेक्ट पंजीकृत करना है?

+1

का उपयोग करना चाहिए आप 'आशय का उपयोग करना चाहिए (संदर्भ, DummyActivity :: class.java)' बजाय –

+0

असंबंधित: गतिविधि पहले से ही एक 'onNewIntent' विधि है, हो सकता है कि आप अपनी फैक्ट्री विधि को 'createIntent' जैसी पहली नज़र में कुछ सरल और समझा जा सकें। (यह कॉलबैक नहीं है, यह 'चालू' से शुरू नहीं होता है।) अपने भविष्य के स्वयं को कुछ समय बचाएं। –

उत्तर

6

DummyActivity.javaClassDummyActivity.Companion और DummyActivity पर नहीं है।

इस javaClass कॉल के परिणामस्वरूप प्रकार Class<Dummy.Companion> और नहीं Class<Dummy> है: वास्तव में, यह भी एक चेतावनी है।भ्रम से बचने के लिए कृपया अधिक स्पष्ट ::class.java वाक्यविन्यास का उपयोग करें।

Warning

इसके बजाय, आप DummyActivity::class.java,

+0

इस मामले में @JvmStatic क्या है? और इस जवाब के लिए धन्यवाद! –

+0

बस प्रश्न के कोड की प्रतिलिपि बनाई। संक्षेप में, '@ jvmStatic' इस विधि को JVM प्लेटफॉर्म में स्थिर बनाने के लिए कंपाइलर को बताता है। –

+0

यदि @jvmstatic का उपयोग किया जा रहा है, तो यह साथी ऑब्जेक्ट के अंदर क्यों है, यह उपर्युक्त कोड नहीं है कि 'ऑन न्यूइन्टेंट()' डमी के – Ryan

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

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