Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试调用虚拟方法';java.lang.String android.content.Context.getPackageName()';在空对象引用上创建新活动_Java_Android_Kotlin_Android Activity - Fatal编程技术网

尝试调用虚拟方法';java.lang.String android.content.Context.getPackageName()';在空对象引用上创建新活动

尝试调用虚拟方法';java.lang.String android.content.Context.getPackageName()';在空对象引用上创建新活动,java,android,kotlin,android-activity,Java,Android,Kotlin,Android Activity,当我尝试使用此代码启动新活动时,收到以下错误: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 类ApiConnection{ var baseapirl=”http://localhost:8081" var data=arrayLi

当我尝试使用此代码启动新活动时,收到以下错误:

  java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

类ApiConnection{
var baseapirl=”http://localhost:8081"
var data=arrayListOf()
fun connectApi():ApiService{
val reformation=reformation.Builder()
.baseUrl(baseApiURl)
.addConverterFactory(GsonConverterFactory.create())
.build()
return reformation.create(ApiService::class.java)
}
趣味登录请求(
登录名:String,
密码:String
){
val service=connectApi()
val call=service.login(登录名,密码)
排队(对象:Callback{
覆盖失效时的乐趣(调用:调用?、t:可丢弃?){
Log.v(“改装”、“呼叫失败”)
}
覆盖fun onResponse(调用:调用?,响应:响应?){
addDataToList(响应)
}
})
}
fun addDataToList(响应:响应?){
var mainActivity=mainActivity()
data.add(
使用者(
响应!!.body()!!.idUser,
响应!!.body()!!.login,
响应!!.body()!!.password,
响应!!.body()!!.name,
回复!!.body()!!。姓氏,
响应!!.body()!!.lastLogin
)
)
mainActivity.LoginToServer(数据)
}
}

class MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val api=ApiConnection()
按钮\u checkIfThisAccountExit\u mainActivity.setOnClickListener{
api.loginRequest(editText\u login\u activityMain.text.toString(),editText\u password\u mainActivity.text.toString())
}
}
fun LoginToServer(数据:ArrayList){
val context=this
val intent=intent(上下文,Main2Activity::class.java)
星触觉(意图)
}
}

你知道是什么导致了这个错误吗?我正在使用改型来连接我的API,在解析结果数据并将其添加到列表后,我想运行新活动(类似于登录系统。在输入用户名/密码后,我想更改活动)。

问题的根源是
var mainActivity=mainActivity()
,您永远不会通过调用
构造函数来创建活动实例,因为这是
android
系统的工作,请参阅

你的问题的正确解决方法是。 但是,如果要使当前代码按原样工作,则必须在ApiConnection
类中传递一个
上下文
对象

fun addDataToList(context: Context, response: Response<UserResponse>?) {
        data.add(
            User(
                response!!.body()!!.idUser,
                response!!.body()!!.login,
                response!!.body()!!.password,
                response!!.body()!!.name,
                response!!.body()!!.surname,
                response!!.body()!!.lastLogin
            )
        )

        val intent = Intent(context, Main2Activity::class.java)
        context.startActivity(intent)
    }
现在从您的活动中将其称为

api.loginRequest((this as Context), editText_login_activityMain.text.toString(), editText_password_mainActivity.text.toString())

您认为这段代码应该是什么样子? 如果你明白我的意思的话,只有正确工作的代码对我来说是不够的。 我还想有代码,这是好看的

fun addDataToList(context: Context, response: Response<UserResponse>?) {
        data.add(
            User(
                response!!.body()!!.idUser,
                response!!.body()!!.login,
                response!!.body()!!.password,
                response!!.body()!!.name,
                response!!.body()!!.surname,
                response!!.body()!!.lastLogin
            )
        )

        val intent = Intent(context, Main2Activity::class.java)
        context.startActivity(intent)
    }
fun loginRequest(context: Context, login: String, password: String)
api.loginRequest((this as Context), editText_login_activityMain.text.toString(), editText_password_mainActivity.text.toString())