MainActivity 运行时未启动 [重复]

Posted

技术标签:

【中文标题】MainActivity 运行时未启动 [重复]【英文标题】:MainActivity not launching when it is run [duplicate] 【发布时间】:2018-12-05 06:27:42 【问题描述】:

我正在开发一个简单的登录和注册 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)
        

    

*更新:我已经通过删除空指针解决了这些问题。我不知道有任何错误,因为我没有检查也不知道如何打开日志错误,所以我不知道以前有人问过这类问题。顺便说一句,我是一个新的安卓开发者。

【问题讨论】:

你能发布你的崩溃日志吗?我认为您的应用在某些地方崩溃了 如果应用程序崩溃而不是自行关闭,请发布相关活动代码和 logcat 副本。 发布您的错误日志 拜托,你能给我看看你的错误日志或你的清单文件吗? 错误日志显示 Session 'app': Error Launching Activity @MadLeo 【参考方案1】:

所以经过长时间的讨论,我可以看到您正在将 null 设置为您的按钮

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。

【讨论】:

是的,甚至在我看到答案之前我就已经改变了。感谢您提供线索。【参考方案2】:

您是否在清单文件中的 Activity 标记中添加此 ⬇。

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

此代码用于第一个启动器活动规范。

【讨论】:

是的,我做到了。你可以参考上面的清单代码。我刚刚发布了。

以上是关于MainActivity 运行时未启动 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

运行时未显示Java字符串[重复]

清单中存在时未授予运行时权限(Android)[重复]

Spring Boot 应用程序在启动时未运行 Flyway 迁移

Android中,我在Activity中用ListView来显示数据,adapter继承BaseAdapter,第一次可显示,重复运行不显示

冷启动 iOS 14 时未处理 iOS Firebase 动态链接

xampp Mysql 设置为服务时未启动