채널톡 아이콘

인프런 커뮤니티 질문&답변

xylblv님의 프로필 이미지

작성한 질문수 2

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

화면 클릭 이벤트 처리 - findViewById, Toast

[BTS앱] 화면 클릭 이벤트 처리 - findViewById, Toast

작성

·

98

·

수정됨

0

스크린샷 2025-02-01 150349.png.webpimage.png

 

코드 똑같이 쳤는데 test device에서 첫번째 이미지 클릭시 "1번째 클릭 완료" 문구가 나오지 않습니다..

답변 2

0

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

전체 코드를 복사해서 공유해주시겠어요? Activity xml 모두 복사해주세요 ㅎㅎ

xylblv님의 프로필 이미지
xylblv
질문자

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp">

        <ImageView
            android:id="@+id/btsImage1"
            android:src="@drawable/bts_1"
            android:layout_width="120dp"
            android:layout_height="120dp"/>

        <ImageView
            android:src="@drawable/bts_2"
            android:layout_width="120dp"
            android:layout_height="120dp"/>

        <ImageView
            android:src="@drawable/bts_3"
            android:layout_width="120dp"
            android:layout_height="120dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp">

        <ImageView
            android:src="@drawable/bts_4"
            android:layout_width="120dp"
            android:layout_height="120dp"/>

        <ImageView
            android:src="@drawable/bts_5"
            android:layout_width="120dp"
            android:layout_height="120dp"/>

        <ImageView
            android:src="@drawable/bts_6"
            android:layout_width="120dp"
            android:layout_height="120dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dp">

        <ImageView
            android:src="@drawable/bts_7"
            android:layout_width="120dp"
            android:layout_height="120dp"/>
    </LinearLayout>




</LinearLayout>
xylblv님의 프로필 이미지
xylblv
질문자

package com.xylbllv.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.Toast


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        // 1. 프로그램이 화면이 클릭되었다는 것을 알아야 합니다!
        val image1 = findViewById<ImageView>(R.id.btsImage1)
        image1.setOnClickListener {

            Toast.makeText(this, "1번 클릭 완료", Toast.LENGTH_LONG).show()

        }



        // 2. 화면이 클릭되면, 다음 화면으로 넘어가서, 사진을 크게 보여줌!




    }
}
개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

https://www.youtube.com/watch?v=sY8Q3fLas3Q
위의 코드로 정상동작하는걸 확인했습니다
가끔 디바이스를 예전걸로 만들면 토스트메세지가 안뜰 떄가 있는데 위의 영상 참고해서 다시 만들어서 해보시겠어요?

xylblv님의 프로필 이미지
xylblv
질문자

image.png

Could not read workspace metadata from C:\Users\wjdtp\.gradle\caches\8.9\transforms\41dbf738ef9a763802d2faec6fb4c6df\metadata.bin



선생님 이 오류 메세지 때문일까요?

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

혹시 새롭게 프로젝트를 만드셔서 빌드해도 마찬가지이신가요?
만약 그렇다면 전체 프로젝트를 압축해서 깃허브나 구글 드라이브에 공유해주시면 살펴보겠습니다.

xylblv님의 프로필 이미지
xylblv
질문자

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요 세빈님

해당 링크에 엑세스 거부라고 뜨는데, 권한을 전체공개로 바꿔주시겠어요?

 

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. jepngsebin051102님.

화면의 클릭 이벤트가 발생하지 않는 문제는 여러 가지 원인일 수 있습니다. 아래와 같은 사항을 확인해 보세요:

  1. 레이아웃 파일 확인: activity_main.xml 파일에서 btsImage1의 ID가 정확하게 설정되어 있는지 확인해 주세요. 코드에서 사용한 ID와 XML 파일의 ID가 일치해야 합니다.

  2. 프로젝트 Clean 및 Rebuild: Android Studio에서 Build 메뉴로 가서 Clean ProjectRebuild Project를 시도해 보세요. 이 작업이 종종 캐시 문제를 해결해 줄 수 있습니다.

  3. 로그캣(Logcat) 확인: 앱을 실행한 후 Android Studio의 Logcat 창을 확인하여 오류 메시지가 있는지 확인해 보세요. 오류 메시지가 있다면, 그 내용을 바탕으로 문제를 진단할 수 있습니다.

  4. 이미지 뷰 추가 위치 확인: onCreate 함수 안에 모든 findViewById 및 이벤트 리스너 등록 코드가 들어가는지 확인하세요. 또한 setContentView 호출 후에만 실행해야 합니다.

비슷한 사례와 도움을 받을 수 있는 질문들은 아래 링크들을 참고해 주세요:

  1. intend 코드가 들어가면 앱이 동작하지 않습니다..

    • 코드에서 인텐트 부분이 잘못되었을 가능성에 대한 논의가 있습니다. Intent 구조를 확인해 보시는 것도 도움이 될 것입니다.
  2. 화면 클릭 이벤트 처리 - findViewById, Toast

    • 자동완성과 findViewById 문제에 관련한 질문입니다. 이럴 경우에는 프로젝트 환경설정이나 버전 문제도 고려해야 합니다.
  3. 화면 클릭 이벤트 처리 - findViewById, Toast 에서 07:08 에서 문제가 생겼습니다.

    • ImageView의 import 문제 해결 방법에 대한 설명이 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.