选项菜单定期导致应用程序崩溃并关闭最后一个活动

问题描述 投票:0回答:1

我已将选项菜单添加到我正在开发的应用程序中,其中包含“主页”按钮。该按钮在大多数情况下都有效,但偶尔会导致应用程序在单击时崩溃。它似乎发生在按钮已经被点击至少一次之后和/或在按下本机后退按钮之后。此外,一旦按下按钮,似乎就会关闭最后一个活动。单击主页按钮后单击后退按钮不会让我回到原来的位置。下面是我的工具栏代码。

// Creates toolbar
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    val menuInflater = menuInflater
    menuInflater.inflate(R.menu.home, menu)
    return true
}

// Listens to click of toolbar
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    val id = item.itemId
    if (id == R.id.home) {
        val intent = Intent(this, Menu::class.java)
        startActivity(intent)
    }
    return super.onOptionsItemSelected(item)
}

这是日志猫:

2023-11-28 11:58:15.760 6693-6693 Android运行时
com.benwhittington.flanges D 关闭虚拟机 2023-11-28 11:58:15.765 6693-6693 Android运行时
com.benwhittington.flanges E 致命异常:main 进程:com.benwhittington.flanges,PID:6693 android.content.ActivityNotFoundException:无法找到显式的 活动类 {com.benwhittington.flanges/android.view.Menu};有 您在 AndroidManifest.xml 中声明了此活动,或者您的 意图与其宣称的不符? 在 android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2171) 在 android.app.Instrumentation.execStartActivity(Instrumentation.java:1805) 在 android.app.Activity.startActivityForResult(Activity.java:5596) 在 androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:780) 在 android.app.Activity.startActivityForResult(Activity.java:5554) 在 androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:761) 在 android.app.Activity.startActivity(Activity.java:6052) 在 android.app.Activity.startActivity(Activity.java:6019) 在 com.benwhittington.flanges.FlangeInspection.onOptionsItemSelected(FlangeInspection.kt:242) 在 android.app.Activity.onMenuItemSelected(Activity.java:4532) 在 androidx.activity.ComponentActivity.onMenuItemSelected(ComponentActivity.java:528) 在 androidx.fragment.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:352) 在 androidx.appcompat.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:269) 在 androidx.appcompat.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:110) 在 androidx.appcompat.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:66) 在 androidx.appcompat.widget.Toolbar$1.onMenuItemClick(Toolbar.java:225) 在 androidx.appcompat.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:781) 在 androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:836) 在 androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:159) 在 androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:987) 在 androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:977) 在 androidx.appcompat.widget.ActionMenuView.invokeItem(ActionMenuView.java:625) 在 androidx.appcompat.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:156) 在 android.view.View.performClick(View.java:7892) 在 android.widget.TextView.performClick(TextView.java:16220) 在 android.view.View.performClickInternal(View.java:7869) 在 android.view.View.-$$Nest$mperformClickInternal(未知来源:0) 在 android.view.View$PerformClick.run(View.java:30891) 在 android.os.Handler.handleCallback(Handler.java:942) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loopOnce(Looper.java:226) 在 android.os.Looper.loop(Looper.java:313) 在 android.app.ActivityThread.main(ActivityThread.java:8762) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.Flanges"
    tools:targetApi="31">
    <activity
        android:name=".ViewISO"
        android:exported="false" />
    <activity
        android:name=".ViewInspection"
        android:exported="false" />
    <activity
        android:name=".AddEmail"
        android:exported="false" />
    <activity
        android:name=".FlangeInspection"
        android:exported="false" />
    <activity
        android:name=".SignUp"
        android:exported="false" />
    <activity
        android:name=".Menu"
        android:exported="false" />
    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
android kotlin android-studio android-optionsmenu
1个回答
0
投票

我相信发生此错误是因为即使您在 Android 清单中声明了菜单活动,但似乎您的菜单活动嵌套在文件夹中,因此,您必须将整个路线添加到您的 Android 清单中(我相信是 android.view.菜单)

您的代码:

<activity
        android:name=".Menu"
        android:exported="false" />

新代码:

<activity
    android:name=".android.view.Menu"
    android:exported="false" />
© www.soinside.com 2019 - 2024. All rights reserved.