- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 Activity ,当它创建时,它会做一些检查,如果用户没有登录,它可能会切换到另一个 Activity 。
如果我这样做,它会起作用:
class HomeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
if (userPreference?.memberRegistered == false) {
val intent = Intent(this, AuthActivity::class.java)
startActivity(intent)
}
}
}
但是如果我把它抽象成另一种方法,它就不行了。
class HomeActivity : SalectActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
if (userPreference?.memberRegistered == false) {
goToActivity(AuthActivity::class.java)
}
}
fun <T: Any> goToActivity(activity: Class<T>) {
val intent = Intent(this, activity::class.java)
startActivity(intent)
}
}
错误是:
java.lang.RuntimeException: Unable to start activity ComponentInfo{nz.salect.handset/nz.salect.handset.HomeActivity}:
android.content.ActivityNotFoundException: Unable to find explicit activity class {nz.salect.handset/java.lang.Class}; have you declared this activity in your AndroidManifest.xml?
.......
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {nz.salect.handset/java.lang.Class}; have you declared this activity in your AndroidManifest.xml?
.......
错误发生在 startActivity()
调用处。
这是Manifest,当然AuthActivity是有的,不然正常的方式不行。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nz.salect.handset">
<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=".HomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".AuthActivity" />
</application>
</manifest>
这里发生了什么?
如何解决这个问题,我错过了什么?
最佳答案
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class >
你得到上面的异常是因为你在 list 文件中没有任何 Activity activity::class.java
这就是你得到 ActivityNotFoundException
的原因/p>
当你使用 val intent = Intent(this, activity::class.java)
意味着你 intent
到另一个名为“activity”的 Activity 而不是你的 AuthActivity
使用这个
fun <T: Any> goToActivity(activity: Class<T>) {
val intent = Intent(this, activity)
startActivity(intent)
}
代替这个
fun <T: Any> goToActivity(activity: Class<T>) {
val intent = Intent(this, activity::class.java)
startActivity(intent)
}
关于android - 如何在我只需要更改 Activity 而不在 Intent 中添加任何内容的情况下抽象更改 Activity 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49663877/
我是一名优秀的程序员,十分优秀!