LoginActivity.kt 파일 내용이 달라요
268
작성한 질문수 21
기존 내용 삭제하고 진행하면 되나요?
추가로 해당 소스 있는 VCS 주소 좀 같이 주세요
package com.example.ostagram_f16.ui.login
import android.app.Activity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import android.os.Bundle
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.Button
import android.widget.EditText
import android.widget.ProgressBar
import android.widget.Toast
import com.example.ostagram_f16.R
class LoginActivity : AppCompatActivity() {
private lateinit var loginViewModel: LoginViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
val username = findViewById<EditText>(R.id.username)
val password = findViewById<EditText>(R.id.password)
val login = findViewById<Button>(R.id.login)
val loading = findViewById<ProgressBar>(R.id.loading)
loginViewModel = ViewModelProvider(this, LoginViewModelFactory())
.get(LoginViewModel::class.java)
loginViewModel.loginFormState.observe(this@LoginActivity, Observer {
val loginState = it ?: return@Observer
// disable login button unless both username / password is valid
login.isEnabled = loginState.isDataValid
if (loginState.usernameError != null) {
username.error = getString(loginState.usernameError)
}
if (loginState.passwordError != null) {
password.error = getString(loginState.passwordError)
}
})
loginViewModel.loginResult.observe(this@LoginActivity, Observer {
val loginResult = it ?: return@Observer
loading.visibility = View.GONE
if (loginResult.error != null) {
showLoginFailed(loginResult.error)
}
if (loginResult.success != null) {
updateUiWithUser(loginResult.success)
}
setResult(Activity.RESULT_OK)
//Complete and destroy login activity once successful
finish()
})
username.afterTextChanged {
loginViewModel.loginDataChanged(
username.text.toString(),
password.text.toString()
)
}
password.apply {
afterTextChanged {
loginViewModel.loginDataChanged(
username.text.toString(),
password.text.toString()
)
}
setOnEditorActionListener { _, actionId, _ ->
when (actionId) {
EditorInfo.IME_ACTION_DONE ->
loginViewModel.login(
username.text.toString(),
password.text.toString()
)
}
false
}
login.setOnClickListener {
loading.visibility = View.VISIBLE
loginViewModel.login(username.text.toString(), password.text.toString())
}
}
}
private fun updateUiWithUser(model: LoggedInUserView) {
val welcome = getString(R.string.welcome)
val displayName = model.displayName
// TODO : initiate successful logged in experience
Toast.makeText(
applicationContext,
"$welcome $displayName",
Toast.LENGTH_LONG
).show()
}
private fun showLoginFailed(@StringRes errorString: Int) {
Toast.makeText(applicationContext, errorString, Toast.LENGTH_SHORT).show()
}
}
/**
* Extension function to simplify setting an afterTextChanged action to EditText components.
*/
fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
})
}
답변 1
CloudFireStore에 데이터가 들어가지 않아요
0
74
1
firebase storage에서 putfile해도 이미지 업로드가 안되요..
0
95
1
1강 AndroidManifest.xml 코드 오류
0
465
1
도와주세요 ㅠㅠ
0
403
1
게시물이 뜨지 않습니다.(detail_veiw)
0
382
0
NavigationBarView 사용법 변경으로 인한 네비게이션 바 애니메이션 적용법
0
509
1
안드로이드 11 이상부터 startActivityForResult 지원 안하므로 다른 방법 이용
0
360
1
bottom_navigation 오류
0
425
1
게시물을 최신게시물순으로 하고싶은데 어떻게 하면 될까요..?ㅠ
0
269
1
오류..? 에러..?
0
472
0
페이스북 로그인
0
355
0
댓글 activity에서 mainActivity의 userFragment 이동 방법관련..
0
366
1
댓글activity에서 userId를 클릭했을 때
0
294
1
파이어베이스 연결에서 막힙니다,,
0
399
1
파이어베이스 이미지url Glide로 불러올 때 에러
1
554
1
- 혹시 사진 업로드 여러장 되게 할수 있는 방법이 있을까요??
0
419
1
화면전환시 색깔이 안나오고 흰바탕입니다
0
260
1
Facebook공식 문서에서 제공해주는 최신 SDK 오류
1
282
0
startActivityForResult와 onActivityResult는 이제 안드로이드 스튜디오에서 못쓰게 하는데 어떻게 수정 해야 할까요?
0
389
1
google 계정 선택창이 아예 뜨지 않습니다.
0
298
1
로그인 시 에러
0
312
0
3강에서 startActivityForResult 사용불가 문제
0
445
1
인스타그램 자바언어로 하는 클론코딩은 없을까요?
0
1691
1
mainfest 오류
1
239
0





