当前位置: 首页 > 知识库问答 >
问题:

MainActivity运行时未启动[重复]

焦兴为
2023-03-14
<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) 
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开发者。

共有1个答案

荆钱明
2023-03-14

因此,经过长时间的讨论,我可以看到您将按钮设置为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。

 类似资料:
  • 定期任务配置: 在Logcat中,我得到以下内容: 附加所有相关细节: 编辑一:经过几天的分析,我想出了以下几点: 这是特定于设备的问题。例如,在nexus设备上不会发生。 这是一个更大问题的一部分。显示此行为的设备在使用、和时也不能正常工作。 一个解决方案是此解决方案。但是,这个解决方案至少存在2个问题。(1)当您终止应用程序时,权限将被重置。这意味着每次你打开应用程序后,手动权限是给予。(2)

  • 问题内容: 我需要在Java应用程序中启动1-3个外部程序,这些程序具有用户定义的路径。我有几个要求: 如果程序已经在运行,我不希望其执行 我不希望任何程序从我的Java应用程序中夺走焦点 我不在乎其中任何一个是否无法启动。他们只需要默默地失败。 到目前为止,这是我想出的: 然后我再用其他两条路径重复3次。就像我期望的那样开始,并满足了我的第三个要求,但是在前两个条件上却失败了。 做这个的最好方式

  • 我想让一个批处理文件在启动时运行在我的Windows10机器上。为了实现这一点,我在以下文件中设置了批处理文件startup.bat的快捷方式: 用户->用户名->AppData->漫游->Microsoft->Windows->开始菜单->程序->启动 因为这是在运行命令框中键入“shell:startup”时出现的路径。我正尝试在批处理文件中运行以下命令: 它应该将右侧的文件路径替换为“w:”

  • 如何在活动启动上显示“滑动菜单”?我正在使用导航抽屉显示幻灯片菜单如下代码 `public class MainActivity extends Base_Activity{private DrawerLayout MDrawerLayout;public static ListView MDrawerList;private ActionBarDrawerToggle MDrawerToggle

  • 我有一个Java应用程序,它位于我编译为可执行jar文件的系统托盘中。我想在我的程序中添加添加到系统启动项的选项。 由于我不知道有什么统一的方法可以为所有操作系统做到这一点,我假设我必须为我打算支持的每个操作系统编写代码,所以我从Windows开始。 当我试图使用此处可用的代码将其添加到注册表中时,我发现在Windows 7和8下,除非我具有管理员权限(通过从提升的命令提示符运行),否则我对注册表