我的应用程序运行得很好,我可以从一个活动转到另一个活动,然后我添加了一些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类
在类中,甚至在视图初始化之前,您就试图获取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
}
}
}
我相信这个问题,因为你试图在活动的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