• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

토스트 메세지가 순차적으로 뜨지않습니다.

21.07.30 18:52 작성 조회수 512

0

안녕하세요. 강사님. 간단한 질문 하나 드리려고 하는데요,

영상 10:38 쯤에 로그인 버튼을 눌렀을때 로그인이 성공하면 토스트 메세지가 "ok", uid 순으로 순차적으로 띄워지는데, 제가 띄우면 첫 번째 토스트 메세지("ok") 는 안띄워지고 두 번째 토스트 메세지(현재 로그인된 uid) 만 뜹니다. 

LENGTH_SHORT 와 LENGTH_LONG 도 섞어서 첫 번째 메세지를 LENGTH_LONG 으로 해보긴 했지만 두 번째 토스트 메세지(uid)만 뜹니다.

무엇때문에 그런건지 궁금합니다.

ps)

실습환경 : 윈도우OS, 안드로이드 OS (갤럭시 S8)

답변 6

·

답변을 작성해보세요.

1

캐시 한번 삭제해주셔도 좋습니다.

https://blog.daum.net/aldkzm/473

1

엇 신기하네요...

한번 아래코드로 테스트해볼까요? a 잠시 나왔다 b가 나오는 것을 확인했습니다.

여기에 a,b 부분을 값만 바꿔서 시도해보세요~

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val test = findViewById<Button>(R.id.test)
test.setOnClickListener {

Toast.makeText(this, "a", Toast.LENGTH_SHORT).show()
Toast.makeText(this, "b", Toast.LENGTH_LONG).show()

}

}
}

0

jgee0116님의 프로필

jgee0116

질문자

2021.08.01

제시해주신 방법대로 다 해봤지만 여전히 마지막 토스트 메세지만 뜨는군요.. );

혹시나해서 다른 기기로 실행해서 테스트해보니까 그 기기에서는 순차적으로 잘 뜹니다.

코드 문제는 아니고 제 휴대폰 문제인 것 같습니다.

프로젝트를 진행하는데 있어서 크게 중요한 문제는 아니라서 그냥 넘어가도 될 것 같습니다. 문제가 된다면 다른 기기로 바꿔서 진행하면 될 것 같습니다. (;

답변 감사합니다. :)

0

jgee0116님의 프로필

jgee0116

질문자

2021.07.31

1. 테스트 한 영상 주소입니다. (죄송합니다. 질문 게시판의 동영상 첨부 방법을 몰라서 블로그에 영상게시했습니다. 동영상 첨부 방법을 알아보고 다음부터는 질문 게시판 기능으로 첨부해서 올리겠습니다.)

https://blog.naver.com/jgee0116/222452134389

2. MainActivity 모든 소스코드입니다. 

package com.gorani.mysampleapp

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.ktx.auth
import com.google.firebase.ktx.Firebase
import com.gorani.mysampleapp.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

private lateinit var auth: FirebaseAuth

private lateinit var binding : ActivityMainBinding // 데이터바인딩

override fun onCreate(savedInstanceState: Bundle?) {

auth = Firebase.auth

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

Toast.makeText(this, auth.currentUser?.uid.toString(), Toast.LENGTH_SHORT).show()

binding = DataBindingUtil.setContentView(this, R.layout.activity_main) // 데이터바인딩

// 회원가입 버튼
val joinBtnClicked = findViewById<Button>(R.id.joinBtn)
joinBtnClicked.setOnClickListener {

// EditText 에서 입력한 값을 가져오는 방법
// 첫 번째 방법 : findViewById 로 직접 가져오기
// val email = findViewById<EditText>(R.id.emailArea)
// val password = findViewById<EditText>(R.id.pwdArea)

// 두 번째 방법 : databinding 으로 가져오기 (MVVM 패턴에서 사용하는 방식)
val email = binding.emailArea
val password = binding.pwdArea

auth.createUserWithEmailAndPassword(email.text.toString(), password.text.toString())
.addOnCompleteListener(this) { task ->

if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Toast.makeText(this, "Join Success", Toast.LENGTH_SHORT).show()


} else {
// If sign in fails, display a message to the user.
Toast.makeText(this, "Join Failed", Toast.LENGTH_SHORT).show()

}
}

}

// 로그아웃 버튼
val logoutBtn = binding.logoutBtn

logoutBtn.setOnClickListener {

auth.signOut()
Toast.makeText(this, auth.currentUser?.uid.toString(), Toast.LENGTH_SHORT).show()

}

// 로그인 버튼

binding.loginBtn.setOnClickListener {

val email = binding.emailArea
val password = binding.pwdArea

auth.signInWithEmailAndPassword(
email.text.toString(),
password.text.toString()
)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information

Toast.makeText(this, "Login Success", Toast.LENGTH_SHORT).show()
Toast.makeText(this, auth.currentUser?.uid.toString(), Toast.LENGTH_LONG).show()

val intent = Intent(this, BoardListActivity::class.java)
startActivity(intent)

} else {
// If sign in fails, display a message to the user.
Toast.makeText(this, "Login Failed", Toast.LENGTH_SHORT).show()
}
}

}


}
}

0

제가 질문을 잘 못 읽었네요~
제가 말씀드린 부분을 테스트해보셨군요

혹시 테스트 한 화면이 어떻게 나오는지 영상이나 스크린샷으로 공유해주실 수 있으실까요~?

그리고 Toast메세지를 위에는 LENGTH_LONG 이라고 한 것을 위 아래 순서 바꿔서도 한번 해보시겠어요?

만약 다 안되시면 소스코드 모두 공유주시면 제가 한번 살펴보겠습니다 :)

0

안녕하세요~ Toast메세지가 겹쳐 있어서, 2번째 것만 보이는 것입니다.

첫번째 토스트 메세지의 길이를 Toast.LENGTH_LONG 이라고 변경하시면, 두번째 토스트가 사라지고 난 이후에 첫번째 토스트가 좀 더 길게 노출이 될 거에요~