【问题标题】:android.content.ActivityNotFoundException: Unable to find explicit activity class Android Studio Kotlin Errorandroid.content.ActivityNotFoundException:无法找到显式活动类 Android Studio Kotlin 错误
【发布时间】:2020-03-30 18:26:29
【问题描述】:

所以我是 android studio 的新手。 所以我有 4 个活动,在 mainactivity 上我使用 startActivity 方法打开注册活动。 现在,当我尝试运行应用程序时,会显示 mainactivity,但是当我单击按钮“注册”(我使用 setonclicklistener 进行 startactivity)时,当我单击按钮时,我的应用程序崩溃并显示以下消息

 2020-03-30 02:04:35.435 20647-20647/com.example.airlineticketreservation E/AndroidRuntime: FATAL 
 EXCEPTION: main
Process: com.example.airlineticketreservation, PID: 20647
android.content.ActivityNotFoundException: Unable to find explicit activity class 
     {com.example.airlineticketreservation/int}; have you declared this activity in your 
     AndroidManifest.xml?
    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1933)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1616)
    at android.app.Activity.startActivityForResult(Activity.java:4487)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
    at android.app.Activity.startActivityForResult(Activity.java:4445)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
    at android.app.Activity.startActivity(Activity.java:4806)
    at android.app.Activity.startActivity(Activity.java:4774)
    at com.example.airlineticketreservation.MainActivity$onCreate$1.onClick(MainActivity.kt:27)
    at android.view.View.performClick(View.java:6294)
    at android.view.View$PerformClick.run(View.java:24770)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

我的 androidmanifest 文件是这个

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.airlineticketreservation">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Registration"
        android:label="@string/app_name"
        />





    <meta-data
        android:name="preloaded_fonts"
        android:resource="@array/preloaded_fonts" />
</application>

</manifest>

我的 mainactivity.kt 文件是这个

package com.example.airlineticketreservation

   import android.content.Intent
   import androidx.appcompat.app.AppCompatActivity
   import android.os.Bundle
   import android.widget.Button
   import android.widget.Spinner


  class MainActivity : AppCompatActivity() {

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

      /* var book_button: Button = findViewById(R.id.book_ticket)
       var name_view:EditText = findViewById(R.id.name_field)
       var cnic_view:EditText = findViewById(R.id.cnic_field)
        var cancellationBtn_mainActivity: Button = findViewById(R.id.cancel_ticket_btn)
       var spinner:Spinner = findViewById(R.id.spinner)

       */
       var registrationBtn_mainActivity : Button = findViewById(R.id.register_btn)

registrationBtn_mainActivity.setOnClickListener {
           var intentx = Intent(this,R.layout.registration::class.java)
           startActivity(intentx)

       }

我该怎么办?

【问题讨论】:

    标签: android android-studio kotlin android-manifest


    【解决方案1】:

    替换:

    R.layout.registration::class.java
    

    与:

    Registration::class.java
    

    您正在尝试将资源 ID 用作 Activity 类,但这是行不通的。

    【讨论】:

      【解决方案2】:

      Intent 构造函数需要两个参数:

      1. 上下文,您的意图将从该上下文传递到系统。
      2. 类,系统将向其传递此意图。

      在您的代码中,使用 R.layout.registration::class.java 您正在引用 resId,它不是类对象。您可以在这部分日志中识别它采用int 值:

      {com.example.airlineticketreservation/int}; have you declared this activity in your 
           AndroidManifest.xml?
      

      所以将R.layout.registration::class.java 替换为Registration::class.java 为:

      registrationBtn_mainActivity.setOnClickListener {
                 var intentx = Intent(this, Registration::class.java)
                 startActivity(intentx)
      
             }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-22
        • 2015-02-28
        • 2018-09-18
        • 2017-05-18
        • 2017-06-24
        • 1970-01-01
        相关资源
        最近更新 更多