onBackPressed 함수가 동영상 하고 다르게 동작합니다.
89
4 asked
선생님 안녕하세요.
아래 함수만 추가 하고 back버튼을 클릭 한번만 해도 오류 없이 자동으로 앱이 종료 됩니다.
로그도 다르게 나옵니다.
전체 소스 공유 드립니다.
https://drive.google.com/file/d/1pywWeGHuAAZb0a0nC1IZZdje1wLZxlLv/view?usp=sharing
override fun onBackPressed()

Answer 2
0
안녕하세요
첨부주신 코드에
onBackPressed
가 없는데 잘 못 올려주신게 아닐까 싶습니다.
0
안녕하세요.
구글 드라이브에 올라간 backButtonex (2).zip 파일에 아래 소스가 있습니다.
감사합니다.
package com.chpang.backbuttonex
import android.os.Bundle
import android.os.Handler
import android.util.Log
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class MainActivity : AppCompatActivity() {
private var isDouble =false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onBackPressed(){
Log.d("MainActivity", "backbutton클릭")
if(isDouble == true) {
finish()
}
isDouble = true
Toast.makeText(this, "종료하실려면 더블 클릭", Toast.LENGTH_LONG).show()
Handler().postDelayed( {
isDouble =false
}, 2000)
}
}
0
https://drive.google.com/file/d/1FrzEyNCQLUPt0vY9Vd8kGi4KRnFyIRy4/view?usp=sharing
파일은 있는데, 공유 기능이 원할하지 않은것 같습니다.
공유 링크 보내드립니다.
0
전체 소스를 올려 드립니다.
명언 리스트를 클릭시 반응이 없습니다.
package com.chpang.chpanggoodword
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
class ListViewAdapter(val List : MutableList<String>): BaseAdapter() {
override fun getCount(): Int {
return List.size
}
override fun getItem(position: Int): Any? {
return List[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(
position: Int,
convertView: View?,
parent: ViewGroup?
): View? {
var convertView = convertView
if (convertView == null) {
convertView =
LayoutInflater.from(parent?.context).inflate(R.layout.listview_item, parent, false)
}
val listviewText = convertView?.findViewById<TextView>(R.id.listViewTextArea)
listviewText!!.text = List[position]
return convertView!!
}
}
package com.chpang.chpanggoodword
import android.content.Intent
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.chpang.chpanggoodword.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val sentenceList = mutableListOf<String>()
sentenceList.add("검정화면에 대충 흰글씨 쓰면 명언같다.")
sentenceList.add("사람에게 하나의 입과 두 개의 귀가 있는 것은 말하기보다 듣기를 두 배로 하라는 뜻이다.")
sentenceList.add("결점이 없는 친구를 사귀려고 한다면 평생 친구를 가질 수 없을 것이다.")
sentenceList.add("자기 아이에게 육체적 노동을 가르치지 않는 것은 약탈과 강도를 가르치는 것과 마찬가지다.")
sentenceList.add("승자는 눈을 밟아 길을 만들지만 패자는 눈이 녹기를 기다린다.")
sentenceList.add("두 개의 화살을 갖지 마라. 두 번째 화살이 있기 때문에 첫 번째 화살에 집중하지 않게 된다.")
sentenceList.add("그 사람 입장에 서기 전까지 절대 그 사람을 욕하거나 책망하지 마라.")
sentenceList.add("뛰어난 말에게도 채찍이 필요하다.")
Log.e("MainActivity", sentenceList.random())
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.showAllSentenceBtn.setOnClickListener {
val intent = Intent(this, SentenceActivity::class.java)
startActivity(intent)
}
binding.goodWordTextArea.setText(sentenceList.random())
}
}
package com.chpang.chpanggoodword
import android.os.Bundle
import android.widget.ListView
import androidx.appcompat.app.AppCompatActivity
class SentenceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sentence)
val sentenceList = mutableListOf<String>()
sentenceList.add("검정화면에 대충 흰글씨 쓰면 명언같다.")
sentenceList.add("사람에게 하나의 입과 두 개의 귀가 있는 것은 말하기보다 듣기를 두 배로 하라는 뜻이다.")
sentenceList.add("결점이 없는 친구를 사귀려고 한다면 평생 친구를 가질 수 없을 것이다.")
sentenceList.add("자기 아이에게 육체적 노동을 가르치지 않는 것은 약탈과 강도를 가르치는 것과 마찬가지다.")
sentenceList.add("승자는 눈을 밟아 길을 만들지만 패자는 눈이 녹기를 기다린다.")
sentenceList.add("두 개의 화살을 갖지 마라. 두 번째 화살이 있기 때문에 첫 번째 화살에 집중하지 않게 된다.")
sentenceList.add("그 사람 입장에 서기 전까지 절대 그 사람을 욕하거나 책망하지 마라.")
sentenceList.add("뛰어난 말에게도 채찍이 필요하다.")
val sentenceAdapter = ListViewAdapter(sentenceList)
val listview = findViewById<ListView>(R.id.sentenceListView)
listview.adapter = sentenceAdapter
}
}
<?xml version="1.0" encoding="utf-8"?>
<layout>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".MainActivity">
<Button
android:id="@+id/showAllSentenceBtn"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_margin="20dp"
android:text="전체명언보기"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/goodWordTextArea"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="명언이 들어갈 위치 입니다1"
android:fontFamily="@font/bmkkubulim"
android:gravity="center"
android:layout_margin="20dp"
android:textColor="@color/white"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SentenceActivity">
<ListView
android:id="@+id/sentenceListView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:id="@+id/listViewTextArea"
android:textSize="15sp"
android:layout_margin="10dp"
android:text="TextArea"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
0
뒤로가기 부분은 이렇게 수정해보시겠어요?
package com.chpang.backbuttonex
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private var isDouble =false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d("MainActivity", "backbutton클릭")
if (isDouble) {
finish()
return
}
isDouble = true
Toast.makeText(this@MainActivity, "종료하실려면 더블 클릭", Toast.LENGTH_LONG).show()
Handler(Looper.getMainLooper()).postDelayed({
isDouble = false
}, 2000)
}
})
}
}
---
그리고 새로 올려주신 부분은 구글 드라이브를 통해서 공유해주시면 살펴보겠습니다.
빠르게 새 강의를 제작하겠습니다 🙇
0
안녕하세요.
명언 소스 수정한걸 다른 질문에 올려야 하는데 제가 혼동 한것 같습니다.
요청하신 명언 소스 압축해서 구글 드라이브에 올렸습니다.
링크 보내드립니다.
https://drive.google.com/file/d/1AECEvhdqfubGCfwQCJliGefJGsQ_ysZi/view?usp=sharing
0
클릭하면 toast메세지가 나오지 않는다는 말씀이시죠?
package com.chpang.chpanggoodword
import android.os.Bundle
import android.widget.ListView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.databinding.DataBindingUtil
import com.chpang.chpanggoodword.databinding.ActivityMainBinding
import kotlin.math.log
class SentenceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sentence)
val sentenceList = mutableListOf<String>()
sentenceList.add("검정화면에 대충 흰글씨 쓰면 명언같다.")
sentenceList.add("사람에게 하나의 입과 두 개의 귀가 있는 것은 말하기보다 듣기를 두 배로 하라는 뜻이다.")
sentenceList.add("결점이 없는 친구를 사귀려고 한다면 평생 친구를 가질 수 없을 것이다.")
sentenceList.add("자기 아이에게 육체적 노동을 가르치지 않는 것은 약탈과 강도를 가르치는 것과 마찬가지다.")
sentenceList.add("승자는 눈을 밟아 길을 만들지만 패자는 눈이 녹기를 기다린다.")
sentenceList.add("두 개의 화살을 갖지 마라. 두 번째 화살이 있기 때문에 첫 번째 화살에 집중하지 않게 된다.")
sentenceList.add("그 사람 입장에 서기 전까지 절대 그 사람을 욕하거나 책망하지 마라.")
sentenceList.add("뛰어난 말에게도 채찍이 필요하다.")
val sentenceAdapter = ListViewAdapter(sentenceList)
val listview = findViewById<ListView>(R.id.sentenceListView)
listview.adapter = sentenceAdapter
listview.setOnItemClickListener { _, _, position, _ ->
Toast.makeText(this, sentenceList[position], Toast.LENGTH_SHORT).show()
}
}
}이렇게 해보시겠어요?
0
안녕하세요, 인프런 AI 인턴입니다. 후다닥님.
onBackPressed 메소드가 예상과 다르게 동작하는 이유는 super.onBackPressed() 호출 때문일 수 있습니다. super.onBackPressed()는 기본적으로 현재 액티비티를 종료하는 역할을 합니다. 따라서, 해당 메소드를 호출하면 뒤로 가기 버튼을 한 번만 눌러도 앱이 종료될 수 있습니다.
여러분이 원하는 행동이 특정 조건이 만족되었을 때만 앱이 종료되는 것이라면, 이 메소드 호출을 적절히 조정해야 합니다. super.onBackPressed()를 주석 처리하거나 필요에 따라 조건적으로 실행하는 방식으로 수정해 볼 수 있습니다.
아래 유사한 질문과 진행 방식이 제안된 링크를 참고해 주세요:
이 게시물이 super.onBackPressed() 호출이 원인일 때 문제를 해결하는 방법을 설명하고 있습니다. 코드를 기반으로 버튼이 두 번 눌러졌을 때만 종료되는 동작을 구현할 수 있도록 도움을 드리고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
주사위앱 소개 및 레이아웃 설정 문제
0
59
2
안드로이드 에뮬레이터가 실행이 안 되요...ㅠ
0
105
2
30 강 소스 좀 올려 주십시요
0
80
2
ListView 초기 실행 안됩니다.
0
94
2
코딩을 완료하고난후 앱 실행시 자동 종료
0
71
2
datavinding에서 오류가 납니다.
0
51
1
안드로이드 스튜디오 버전 차이로 초기 empyt activity 선택하면 안됩니다.
0
108
2
context의 구별에 대하여
0
69
2
"프롤로그에서 ..." 오류 관련해 직전 질문에 대한 추가 질문입니다.
0
67
2
"프롤로그에서 콘텐츠가 허용되지 않습니다." 오류
0
156
3
해결완료
1
186
2
databinding 설정후 run하면 에러(해결)
0
222
2
databinding 설정 이후 실행시 에러
0
268
4
안드로이드 입문하는 사람입니다.
0
70
1
Firebase uid
0
75
3
activity_main 화면 다름
0
114
2
강의화면과 다른데 맞게진행되는것인가요...????
0
105
2
파이어베이스 질문
0
74
2
ActivityMainBinding에 오류가 납니다
0
134
2
선생님 onBackPressed 작동이 안되는거 같습니다
0
118
2
>app>res>layout 이 존재하지 않습니다.
0
119
2
안드로이드 스튜디오 미어캣 버전 사용 한글 깨짐
0
747
2
안드로이드 스튜디오 오류 발생 시 대처 방법은 요?
0
289
2
[Twice앱]안드로이드 스튜디오 '미어캣'으로 강의들어도 되나요?
1
156
2


