【发布时间】:2019-12-06 10:47:49
【问题描述】:
我正在尝试从活动中调用 viewModel 中的方法,但未调用该方法。
LoginViewModel
class LoginViewModel : ViewModel() {
private var mLoginData: MutableLiveData<LoginModal>? = null
private var loginRepository: LoginRepository? = null
fun initLogin(jsonObject: JsonObject) {
if (mLoginData != null) {
return
}
loginRepository = LoginRepository().getInstance()
mLoginData = loginRepository?.getLoginData(jsonObject)
}
fun getLoginData(): MutableLiveData<LoginModal>? {
return mLoginData
}
}
LoginActivity
class LoginActivity : AppCompatActivity() {
var etUsername: EditText? = null
var etPassword: EditText? = null
var loginViewModel: LoginViewModel? = null
private var mLoginData: MutableLiveData<LoginModal>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.statusBarColor = ContextCompat.getColor(this, R.color.colorPrimary);
etUsername = findViewById(R.id.et_username)
etPassword = findViewById(R.id.et_password)
loginViewModel = ViewModelProviders.of(this).get(LoginViewModel::class.java)
}
fun login(view: View) {
val jsonObject = JsonObject()
jsonObject.addProperty("userId", etUsername!!.text.toString())
jsonObject.addProperty("password", etPassword!!.text.toString())
jsonObject.addProperty("deviceId", "45684")
loginViewModel?.initLogin(jsonObject)
Log.d("Login Activity", "Login Data : " + mLoginData)
}
}
login方法被一个按钮的onClick调用,但是initLogin没有被调用。
请帮忙。谢谢你
更新:
XML 用于调用 login 的位置..
<ImageButton
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/ic_login"
android:background="@android:color/transparent"
android:onClick="login"/>
【问题讨论】:
-
日志
Log.d("Login Activity", "Login Data : " + mLoginData)在login内是否打印? -
你调试过代码吗?
-
是的,我已经调试过了,
mLoginData是在LoginActivity中定义的,误删了。我将编辑问题 -
发布您的 xml 文件
-
请清除
mLoginData。您将它添加到Activity和ViewModel。没有得到它的目的
标签: android kotlin mvvm viewmodel