Search code examples
androidkotlininstantiationexception

java.lang.InstantiationException: java.lang.Class<com.example.exampleproject.ExampleActivity> has no zero argument constructor


When i run my app its showing me (InstantiationException:has no zero argument constructor) and ask for create a zero argument constructor, I am new in kotlin please suggest me how i can solve it. Login Activity:-

 class LoginActivity(val ViewModelProvider: Any) : AppCompatActivity(), AuthListenner {
    private val listview: ListView? = null
    private val progressBar: ProgressBar? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
    }
    override fun onStarted() {
        toast("Login Started")
    }
    override fun onSuccess(logingResponse: LiveData<String>) {
        toast("Login Success")
    }
    override fun onFailure(message: String) {
        toast(message)
    }
}

This is my Model Class:-

class AuthViewModel() : ViewModel() {
var username: String? = null
var password:String? = null
var authListenner: AuthListenner? = null
fun onLoginButtonClick(View: View){
    authListenner?.onStarted()
    if (username.isNullOrEmpty() || password.isNullOrEmpty()){
        authListenner?.onFailure("Invalid username or password")
        return
    }
    val logingResponse = UserRepository().userLogin(username!!, password!!)
    authListenner?.onSuccess(logingResponse)
}

}

class UserRepository {

fun userLogin(username: String, password: String) : LiveData<String> {
    val loginResponse = MutableLiveData<String>()
    MyApi().userLogin(username, password)
        .enqueue(object : Callback<ResponseBody> {
            override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
               loginResponse.value = t.message
            }
            override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
                if (response.isSuccessful){
                    loginResponse.value = response.body()?.string()
                }else{
                    loginResponse.value = response.errorBody()?.string()
                }
            }
        })
    return loginResponse
}

}

interface AuthListenner {
fun onStarted()
fun onSuccess(logingResponse: LiveData<String>)
fun onFailure(message: String)

}


Solution

  • Can't add para to the AppCompatActivity, it should be

    class LoginActivity: AppCompatActivity(), AuthListenner {
        //...
    }