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

신승찬님의 프로필 이미지
신승찬

작성한 질문수

[중급편] 친절한 JETPACK 개론 <상> (Android Kotlin)

DataBinding 과 data class

에러

작성

·

278

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

DataBinding 과 data class 강의 듣고잇는중입니다

xml에서 버튼에 myClick을 연결시킨 부분부터 애뮬레이터에서 버튼을 누르면 애플리케이션이 자동종료됩니다.

코드를 똑같이 따라쳣는데 왜 이렇게 된건지모르겟습니다.

에러내용입니다

(코드내용 똑같다고 보면 될거같습니다.)

 

<?xml version="1.0" encoding="utf-8"?>
<layout
    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">

    <data>
<variable
    name="user"
    type="com.actual.jetpack_ex_databinding2.Person" />
    </data>

<LinearLayout

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text= "@{user.name}"
        android:textSize="50sp"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text= "@{Integer.toString(user.age)}"
        android:textSize="50sp"
        />

    <TextView
        android:textSize="100dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@{user.age > 30 ? `나이 많음` : `나이 적음`}"
        />

    <Button
        android:text = "btn"
        android:onClick="myClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    

</LinearLayout>
</layout>

 

package com.actual.jetpack_ex_databinding2

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.databinding.DataBindingUtil
import com.actual.jetpack_ex_databinding2.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding : ActivityMainBinding

    var testCount = 20

    override fun onCreate(savedInstanceState: Bundle?) {


        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main )

       // binding.test.text= "바뀐 텍스트"

        val person = Person("개복치", 20)
        binding.user= person

       fun myClick(view : View) {
           Log.d("MainActivity", "onClick")
           testCount++

           val person = Person("개복치", testCount)
           binding.user = person
       }


    }
}

 

package com.actual.jetpack_ex_databinding2

data class Person (
    val name : String,
    val age : Int

)

FATAL EXCEPTION: main

Process: com.actual.jetpack_ex_databinding2, PID: 7731

java.lang.IllegalStateException: Could not find method myClick(View) in a parent or ancestor Context for android:onClick attribute defined on view class com.google.android.material.button.MaterialButton

at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:506)

at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:464)

at android.view.View.performClick(View.java:7659)

at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1213)

at android.view.View.performClickInternal(View.java:7636)

at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)

at android.view.View$PerformClick.run(View.java:30156)

at android.os.Handler.handleCallback(Handler.java:958)

at android.os.Handler.dispatchMessage(Handler.java:99)

at android.os.Looper.loopOnce(Looper.java:205)

at android.os.Looper.loop(Looper.java:294)

at android.app.ActivityThread.main(ActivityThread.java:8177)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)

 

그전까지는 잘 되는거로 보아 onClick="myClick" 부분이 문제인것같은데 잘 못찾겟습니다.

 

답변 1

0

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

강의 코드를 보시면 myClick이 onCreate 범위 밖에 있습니다.

괄호의 범위를 확인해보시겠어요?

 

image

신승찬님의 프로필 이미지
신승찬
질문자

감사합니다.

수정했더니 잘 작동합니다.

사소한 실수로 몇시간을 날렸네요.....

신승찬님의 프로필 이미지
신승찬

작성한 질문수

질문하기