我正在开发一个简单的登录和注册android应用,并且所有内容均已编码,并且未发出任何错误。该应用程序可以成功运行并且全部运行,但是屏幕上没有显示启动器活动。就像,它只会显示,然后立即关闭该应用程序。我希望有人能明白我在这里要说的话。另外,我100%确定我已在清单文件中注册了活动。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<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"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:name=".LoginActivity">
</activity>
<activity
android:name=".RegisterActivity">
</activity>
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<meta-data
android:name="android.app.alertbox"
android:resource="@xml/automotive_app_desc"/>
</application>
</manifest>
这就是我从错误日志中得到的信息。
Caused by: kotlin.KotlinNullPointerException
at com.example.acer.alertbox.MainActivity.onCreate(MainActivity.kt:17)
at android.app.Activity.performCreate(Activity.java:6910)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2746)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
这是我的MainActivity.kt代码:
package com.example.acer.alertbox
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnLogin: Button? = null
val btnRegister: Button? = null
btnLogin!!.setOnClickListener {
val intent = Intent(this@MainActivity, LoginActivity::class.java)
startActivity(intent)
}
btnRegister!!.setOnClickListener {
val regIntent = Intent(this@MainActivity, RegisterActivity::class.java)
startActivity(regIntent)
}
}
}
*更新:我已经通过删除空指针解决了问题。我不知道有任何错误,因为我没有检查,也不知道如何打开“日志错误”,所以这就是为什么我之前都不知道这种问题的原因。顺便说一下,我是一名新的android开发人员。
答案 0 :(得分:0)
您是否将此清单within添加到清单文件中的“活动”标记中。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
此代码用于首次启动器活动规范。
答案 1 :(得分:0)
因此,经过长时间的讨论,我可以看到您将按钮设置为空
val btnLogin: Button? = null
val btnRegister: Button? = null
然后在null上设置onClickListener,这就是它崩溃的原因,因此您必须在声明后设置按钮的引用
btnLogin = findViewById(R.id.buttonid) as Button
btnRegister = findViewById(R.id.buttonid) as Button
您可以在activity_main布局文件中找到的按钮ID。