伴随对象 - Android是否想将它们注册为活动(?)

And*_*ejZ 6 android kotlin companion-object

我有一个活动

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

它在清单中声明如下:

    <activity android:name=".DummyActivity"/>
</application>
Run Code Online (Sandbox Code Playgroud)

当我尝试启动它时,我得到:

引起:android.content.ActivityNotFoundException:无法找到显式活动类> {com.example.andrzejzuzak.visiondummyapp/com.example.andrzejzuzak.visiondummyapp.DummyActivity $ Companion}; 你有没有在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.在android.app.Activity.startActivityForResult(Activity.java:3890)的android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)下的v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)位于android.app.Activity.startActivity(Activity.java:4181)的android.app.Activity.startActivity(Activity.java:4213)上的.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859).在Android.app的android.app.ActivityThread.deliverResults(ActivityThread.java:3695)的android.app.Activity.dispatchActivityResult(Activity.java:6456)上的example.andrzejzuzak.visiondummyapp.MainActivity.onActivityResult(MainActivity.kt:85) .ActivityThread.handleSendResult(ActivityThread.java:3742 )在Android.A.运行时android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1393)上的android.app.ActivityThread.-wrap16(ActivityThread.java). os.Looper.loop(Looper.java:148)在android.app.ActivityThread.main(ActivityThread.java:5417)java.lang.reflect.Method.invoke(Native Method)

困扰我的是这条线:

无法找到显式活动类{com.example.andrzejzuzak.visiondummyapp/com.example.andrzejzuzak.visiondummyapp.DummyActivity $ Companion

它是否真的意味着我必须在某处注册Companion对象?

Yoa*_*erg 8

DummyActivity.javaClass是指DummyActivity.Companion而不是指DummyActivity.事实上,它甚至是一个警告:

所得到的这种类型的javaClass呼叫 Class<Dummy.Companion>,而不是Class<Dummy>.请使用更清晰的 ::class.java语法以避免混淆.

警告

相反,你应该使用DummyActivity::class.java,