我已将选项菜单添加到我正在开发的应用程序中,其中包含“主页”按钮。该按钮在大多数情况下都有效,但偶尔会导致应用程序在单击时崩溃。它似乎发生在按钮已经被点击至少一次之后和/或在按下本机后退按钮之后。此外,一旦按下按钮,似乎就会关闭最后一个活动。单击主页按钮后单击后退按钮不会让我回到原来的位置。下面是我的工具栏代码。
// 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 清单中声明了菜单活动,但似乎您的菜单活动嵌套在文件夹中,因此,您必须将整个路线添加到您的 Android 清单中(我相信是 android.view.菜单)
您的代码:
<activity
android:name=".Menu"
android:exported="false" />
新代码:
<activity
android:name=".android.view.Menu"
android:exported="false" />