空对象引用上的java.lang.String android.content.Context.getPackageName()
我在科特林班工作。任何帮助或知识都将不胜感激!谢谢!:) 这是科特林班。空对象引用上的java.lang.String android.content.Context.getPackageName(),android,kotlin,android-intent,Android,Kotlin,Android Intent,我在科特林班工作。任何帮助或知识都将不胜感激!谢谢!:) 这是科特林班。 class UserData{ private var contex:Context?=null private var sharedRef:SharedPreferences?=null constructor(context:Context){ this.contex = contex this.sharedRef = context.getSharedP
class UserData{
private var contex:Context?=null
private var sharedRef:SharedPreferences?=null
constructor(context:Context){
this.contex = contex
this.sharedRef = context.getSharedPreferences("userData", Context.MODE_PRIVATE)
}
fun loadPhoneNumber(): String? {
val phoneNumber = sharedRef!!.getString("phoneNumber","empty")
if (phoneNumber.equals("empty")){
val intent=Intent(contex, Login::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
contex!!.startActivity(intent)
}
return phoneNumber
}
}
在下面提到的此行中获取错误
val intent=Intent(contex, Login::class.java)
val intent=Intent(contex, Login::class.java)
从崩溃中获取的错误日志
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:3126)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3269)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1960)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7094)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
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.ComponentName.<init>(ComponentName.java:130)
at android.content.Intent.<init>(Intent.java:6751)
at com.devfoster.findmyphone.startup.UserData.loadPhoneNumber(UserData.kt:25)
at com.devfoster.findmyphone.startup.MainActivity.onCreate(MainActivity.kt:17)
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3126)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3269)上
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1960)
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:214)
位于android.app.ActivityThread.main(ActivityThread.java:7094)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Context.getPackageName()”
位于android.content.ComponentName。(ComponentName.java:130)
位于android.content.Intent.(Intent.java:6751)
在com.devfoster.findmyphone.startup.UserData.loadPhoneNumber(UserData.kt:25)上
在com.devfoster.findmyphone.startup.MainActivity.onCreate上(MainActivity.kt:17)
您的构造函数块中有一个输入错误。试试这个:
this.contex = context
与此相反:
this.contex = contex
或者这个:
val intent = Intent(this, Login :: class.java)
与此相反:
this.contex = contex