강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ssgodda1775
ssgodda1775

câu hỏi đã được viết

[Cấp độ Trung cấp] Giới thiệu JETPACK thân thiện <Phần 1> (Android Kotlin)

DataBinding và data class

에러

Viết

·

343

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" 부분이 문제인것같은데 잘 못찾겟습니다.

 

androidkotlinjetpack

Câu trả lời 1

0

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

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

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

 

image

ssgodda1775님의 프로필 이미지
ssgodda1775
Người đặt câu hỏi

감사합니다.

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

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

Hình ảnh hồ sơ của ssgodda1775
ssgodda1775

câu hỏi đã được viết

Đặt câu hỏi