初始化改造实例"/>
如何正确初始化改造实例
我一直在尝试通过Tutotial视频使用RXJava,RetroFit和NodeJS在Kotlin上制作Android应用。添加此字符串-val retrofit = RetroFitClient.getInstance()
后,该应用程序无法在我的模拟器上打开,因此我无法注册或登录。
有MainActivity代码,项目在此存储库中
class MainActivity : AppCompatActivity() {
lateinit var IMyService:INodeJS
internal var disposables = CompositeDisposable()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// init API
val retrofit = RetroFitClient.getInstance()
var IMyService = retrofit.create(INodeJS::class.java)
login_button.setOnClickListener {
loginUser(edit_email.text.toString(), password.text.toString())
}
register_button.setOnClickListener {
registerUser(edit_email.text.toString(), password.text.toString())
}
}
override fun onStop() {
disposables.clear() // do not send event after activity has been stopped
super.onStop()
}
override fun onDestroy() {
disposables.clear() // do not send event after activity has been destroyed
super.onDestroy()
}
private fun loginUser(email: String, password: String) {
disposables.addAll(IMyService.loginUser(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { message ->
if (message.contains("encrypted_password"))
Toast.makeText(this, "Login success", Toast.LENGTH_LONG).show()
else
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
})
}
private fun registerUser(email: String, password: String) {
val enter_name_view = LayoutInflater.from(this)
.inflate(R.layout.enter_name_layout, null)
MaterialStyledDialog.Builder(this)
.setTitle("Register")
.setDescription("One more step")
.setCustomView(enter_name_view)
.setIcon(R.drawable.ic_user)
.setNegativeText("Cancel")
.onNegative { dialog, _ -> dialog.dismiss() }
.setPositiveText("Register")
.onPositive {
_, _ ->
val editName = enter_name_view.findViewById<View>(R.id.name) as MaterialEditText
disposables.addAll(IMyService.registerUser(email, editName.text.toString(), password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { message ->
Toast.makeText(this, message, Toast.LENGTH_LONG).show()
})
}
.show()
}
}
回答如下:您正在尝试在较旧的Java版本上使用Java 8
功能。将此添加到您应用的build.gradle
:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
更多推荐
如何正确初始化改造实例
发布评论