Я делаю приложение, которое сначала запускает login_nb. Проблем не было, пока я не добавил userinfoinput.kt в этот проект, но после этого он сделал некоторые ошибки.
Мой код манифеста кода:
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
package = "com.example.nb_main">
<uses-permission android:name = "android.permission.INTERNET" />
<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/Theme.Nb_main"
android:usesCleartextTraffic = "true">
<activity android:name = ".SignUp" />
<activity android:name = ".photoboard" />
<activity android:name = ".addPhoto" />
<activity android:name = ".textboard" />
<activity android:name = ".login_nb">
<intent-filter>
<action android:name = "android.intent.action.MAIN" /> <!-- Move this to set the initial activity -->
<category android:name = "android.intent.category.LAUNCHER" /> <!-- Move this to set the initial activity -->
</intent-filter>
</activity>
<activity android:name = ".popup_color" />
<activity android:name = ".built" />
<activity android:name = ".userinfoinput"/>
<!--
Set to true if your app is Standalone, that is, it does not require the handheld
app to run.
-->
<activity
android:name = ".square"
android:label = "@string/title_activity_square" />
<activity android:name = ".MainActivity" />
</application>
И сообщение об ошибке выглядит следующим образом:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.nb_main, PID: 9057
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.nb_main/com.example.nb_main.login_nb}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3194)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:145)
at android.content.ComponentName.<init>(ComponentName.java:131)
at android.content.Intent.<init>(Intent.java:6510)
at com.example.nb_main.login_nb.<init>(login_nb.kt:24)
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
at android.app.Instrumentation.newActivity(Instrumentation.java:1243)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3182)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
I/Process: Отправка сигнала. PID: 9057 SIG: 9
Пожалуйста, скажите мне, что я сделал неправильно. В основном использую kotlin, но и java как-то понимаю.
Отвечает ли это на ваш вопрос? Что такое исключение NullPointerException и как его исправить?
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference at android.content.ContextWrapper.getPackageName(ContextWrapper.java:145) at android.content.ComponentName.<init>(ComponentName.java:131) at android.content.Intent.<init>(Intent.java:6510) at com.example.nb_main.login_nb.<init>(login_nb.kt:24)
В login_nb.kt
строке 24 есть некоторый код инициализации экземпляра, который создает экземпляр Intent
. Слишком рано в отношении жизненного цикла деятельности. На начальной стадии активность еще не готова к использованию в качестве Context
. Обычное место для такого кода инициализации — активность onCreate()
.
О, вы были правы, я объявил о намерении передать данные аутентификации другому действию. Я сделал это, потому что хотел, чтобы намерение использовалось глобально в login_nb.kt, но я обнаружил, что объявление его в OnCreate() не может выполнить мое намерение. Не могли бы вы рассказать мне, как?
Вы можете объявить поле на уровне класса, но любое назначение инициализации, требующее контекста, должно быть позже.
проверьте эту ссылку stackoverflow.com/questions/28515049/…