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

RunTimeException无法实例化活动组件信息{…}:JAVAlang.NullPointerException:

李洋
2023-03-14

我的应用程序运行得很好,我可以从一个活动转到另一个活动,然后我添加了一些Toast消息用于注册按钮,然后我在尝试从MainActivity转到RegistrationActivity时遇到了这个错误。。

美娜ctivity.kt

import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File
import java.io.FileReader
import java.io.InputStream
import java.util.jar.Manifest

class MainActivity : AppCompatActivity() {

    // private val STORAGE_PERMISSION_CODE = 1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btnLogin.setOnClickListener {
            Toast.makeText(this,"Some message", Toast.LENGTH_SHORT).show()
        }

        tvGoToRegistration.setOnClickListener{
            val intent = Intent(this, RegistrationActivity::class.java)
            startActivity(intent)
        }
    }

注册ctivity.kt

package com.example.myapplication

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_registration.*

class RegistrationActivity : AppCompatActivity(){

    val userName = etUserName.text.toString()
    val userEmail = etUserEmail.text.toString()
    val userPassword = etPassword.text.toString()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_registration)

        btnRegistration.setOnClickListener {
            if(validate() == false)
                 Toast.makeText(this,"Incomplete data", Toast.LENGTH_SHORT).show()
             else
             {
                 Toast.makeText(this, "Registration successed", Toast.LENGTH_SHORT).show()
                 // update database
             }
        }
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.569" />

    <TextView
        android:id="@+id/tvGoToRegistration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Go to registration"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnLogin" />
</androidx.constraintlayout.widget.ConstraintLayout>

活动注册。xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <EditText
        android:id="@+id/etUserName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="name.."
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.155" />

    <EditText
        android:id="@+id/etUserEmail"
        style="@android:style/Widget.DeviceDefault.Light.EditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="email.."
        android:inputType="textEmailAddress"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etUserName"
        app:layout_constraintVertical_bias="0.147" />

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="password.."
        android:inputType="textPassword"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etUserEmail"
        app:layout_constraintVertical_bias="0.165" />

    <TextView
        android:id="@+id/tvBackToLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Already sign in? Login"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnRegistration" />

    <Button
        android:id="@+id/btnRegistration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Register"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etPassword"
        app:layout_constraintVertical_bias="0.383" />
</androidx.constraintlayout.widget.ConstraintLayout>

显示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <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=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <activity android:name=".RegistrationActivity"/>
        <activity android:name=".Test"/>
    </application>

</manifest> 

和logchat

2019-12-09 09:08:16.171 28691-28691/com。实例myapplication E/AndroidRuntime:致命异常:主进程:com。实例myapplication,PID:28691 java。lang.RuntimeException:无法实例化活动组件信息{com.example.myapplication/com.example.myapplication.RegistrationActivity}:java。lang.NullPointerException:尝试调用虚拟方法“android”。所容纳之物下午。Android应用信息。所容纳之物上下文android上的空对象引用上的getApplicationInfo()。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2548)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2707)。应用程序。活动线程-android上的wrap12(ActivityThread.java)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1460)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:154)。应用程序。活动线程。java上的main(ActivityThread.java:6077)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:865)。Android内部的操作系统。合子体。main(zyteinit.java:755)由以下原因引起:java。lang.NullPointerException:尝试调用虚拟方法“android”。所容纳之物下午。Android应用信息。所容纳之物上下文android上的空对象引用上的getApplicationInfo()。所容纳之物ContextWrapper。android上的getApplicationInfo(ContextWrapper.java:149)。看法ContextThemeWrapper。android上的getTheme(ContextThemeWrapper.java:157)。所容纳之物上下文在androidx上获得StyledAttributes(Context.java:575)。appcompat。应用程序。appcompatidelegateimpl。在androidx创建Subdecor(appcompateDelegateImpl.java:692)。appcompat。应用程序。appcompatidelegateimpl。androidx上的ensureSubDecor(appcompateDelegateImpl.java:659)。appcompat。应用程序。appcompatidelegateimpl。androidx上的findViewById(appCompateDelegateImpl.java:479)。appcompat。应用程序。应用程序活动。findViewById(AppCompatActivity.java:214)位于com。实例我的申请。注册活动_$_在com上找到cachedviewbyd(RegistrationActivity.kt)。实例我的申请。注册活动。(RegistrationActivity.kt:10)在java。朗,同学们。android上的newInstance(本机方法)。应用程序。仪器。android上的newActivity(Instrumentation.java:1079)。应用程序。活动线程。android上的performLaunchActivity(ActivityThread.java:2538)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2707)。应用程序。活动线程-android上的wrap12(ActivityThread.java)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1460)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:154)。应用程序。活动线程。java上的main(ActivityThread.java:6077)。朗,反思一下。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(zyteinit.java:865)。Android内部的操作系统。合子体。main(ZygoteInit.java:755)

我认为这个错误是由MainActivity中的startActivity(intent)引起的,但当我在debbuger中运行它时,我可以越过这一行,但我不能进入RegistrationActivity类

共有2个答案

钱志
2023-03-14

在类中,甚至在视图初始化之前,您就试图获取edittext的文本。你必须调用editText.text.toString()只有在setContentView()之后

遵循以下代码:

package com.example.myapplication

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_registration.*

class RegistrationActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_registration)

        val userName = etUserName.text.toString()
        val userEmail = etUserEmail.text.toString()
        val userPassword = etPassword.text.toString()

        btnRegistration.setOnClickListener {
            if (validate() == false)
                Toast.makeText(this, "Incomplete data", Toast.LENGTH_SHORT).show()
            else {
                Toast.makeText(this, "Registration successed", Toast.LENGTH_SHORT).show()
                // update database
            }
        }
    }
干京
2023-03-14

我相信这个问题,因为你试图在活动的onCreate之前从editText获取文本。

如果在创建时将此代码移到onCreate,它应该可以工作。

package com.example.myapplication

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_registration.*

class RegistrationActivity : AppCompatActivity(){


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_registration)

    //HERE AFTER setContentView, THE LAYOUT IS RENEDERED

    val userName = etUserName.text.toString()
    val userEmail = etUserEmail.text.toString()
    val userPassword = etPassword.text.toString()

    btnRegistration.setOnClickListener {
        if(validate() == false)
             Toast.makeText(this,"Incomplete data", Toast.LENGTH_SHORT).show()
         else
         {
             Toast.makeText(this, "Registration successed", Toast.LENGTH_SHORT).show()
             // update database
         }
    }
}

如果它不工作,请张贴堆栈跟踪的错误,你得到这一次

 类似资料:
  • 很好的一天!我正在努力解决这个问题一周,这是以前没有的(也就是说,这个程序以前是有效的)。 问题:我的登录表单的GUI将不再加载。 给定:(LoginScreen类视图) 我的login_screenxml代码: 最后,我的AndroidID清单。xml 这是我的Logcat输出: 注意:每当我在“扩展活动”之后删除代码“implements JPacketListener”,并删除它的方法(on

  • 我有一段时间在写代码 我的错误是: 无法实例化活动组件信息{com.example.example/com.example.sample.MainActivity}:java。lang.NullPointerException:尝试调用虚拟方法“android”。所容纳之物下午。Android应用信息。所容纳之物上下文对空对象引用执行getApplicationInfo()

  • 我目前正在一个android项目,当试图运行后构建的应用程序平原崩溃。以下是LogCat详细信息: 2021-11-13 13:37:08.105 11908-11908/com.example.finalprojectE/AndroidRuntime: FATAL EXCEPTION:主进程:com.example.finalproject, PID: 11908java.lang.Runtim

  • 我是Android程序员的新手。最近,我尝试在android应用程序中使用google map v2制作项目,但是我得到了很多错误(我已经将google play服务添加到我的库中,并且在这里找到了类似的主题,但是没有解决我的问题)。请看我的日志猫吼: my mainactivity.java: 我在这里使用的是fragment,所以这里是fragment_main.xml: 还有我的舱单 这里是

  • 我有一个浮动按钮在一个片段,并希望传递意图到另一个活动。但是,当我按下浮动按钮时,导致“无法启动activity ComponentInfo”错误。 ------------编辑---------------------- 下面是我的意图代码:

  • RegistrationActivity.kt activity_main.xml activity_registraion.xml