마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

급한마음에 아까 소스를 안올려서 다시질문합니다. Could not find a method onClick(View) 오류

0 추천

버튼 3개에 각각 토스트메시지, 페이지이동, 종료 명령을 나눠주려고 하는데

클래스 상에서는 오류가 없는데 실행상에 오류가 생깁니다 ㅠㅜ

버튼2에서 뭐가 어쩐다고 하는데...

MainActivity.This 로 줬는데 왜 쿠드 낫 파인드라고 나올까요? ㅠㅜ

 

 

오류코드

 

01-07 18:34:01.615  20165-20165/comthatus.naver.httpcafe.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: comthatus.naver.httpcafe.myapplication, PID: 20165
    java.lang.IllegalStateException: Could not find a method onClick(View) in the activity class comthatus.naver.httpcafe.myapplication.MainActivity for onClick handler on view class android.widget.Button with id 'button2'
            at android.view.View$1.onClick(View.java:3821)
            at android.view.View.performClick(View.java:4461)
            at android.view.View$PerformClick.run(View.java:18520)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NoSuchMethodException: onClick [class android.view.View]
            at java.lang.Class.getConstructorOrMethod(Class.java:472)
            at java.lang.Class.getMethod(Class.java:857)
            at android.view.View$1.onClick(View.java:3814)
            at android.view.View.performClick(View.java:4461)
            at android.view.View$PerformClick.run(View.java:18520)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)
            at dalvik.system.NativeStart.main(Native Method)
=============================================================================
 
클래스 소스
 
 
public class MainActivity extends ActionBarActivity
{
 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
 
 
        View.OnClickListener listener=new View.OnClickListener()
        {
            public void onClick(View view) {
 
                switch (view.getId())
                {
                    case R.id.button:
 
 
                    case R.id.button2:
                        Intent intent =new Intent(MainActivity.this, second.class);
                        startActivity(intent);
                        finish();
 
                    case R.id.button3:
                        finish();
 
                }
 
            }
 
        };
 
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
};
 
 
=========================================================
 
레이아웃은 글자수 제한 때문에 덧글에 첨부했습니다.

 

은빛모르포나비 (170 포인트) 님이 2015년 1월 7일 질문
레이아웃 텍스트

<RelativeLayout
    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" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:src="@drawable/imag"
            android:id="@+id/imageView2"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true"/>

        <AnalogClock
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/analogClock"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="164dp" />

        <TextView
            android:textColor="#fffdfbff"
            android:textStyle="bold"
            android:textSize="40dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="아무말"
            android:id="@+id/textView"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true" />

        <CheckBox

            android:layout_marginBottom="50dp"
            android:textColor="#ff000000"
            android:textStyle="bold"
            android:textSize="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="체 크 하 기"
            android:id="@+id/checkBox"
            android:layout_alignBottom="@+id/imageView2"
            android:layout_centerHorizontal="true" />


    </RelativeLayout>

<RelativeLayout
    android:gravity="center_horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <Button
        android:background="#ffb8ffb8"
        android:onClick="onClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="토스트"
        android:id="@+id/button"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true" />

    <Button
        android:background="#ffb8ffb8"
        android:onClick="onClick"
        android:textSize="15dp"
        android:paddingRight="30dp"
        android:paddingLeft="30dp"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이동하기"
        android:id="@+id/button2"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

    <Button
        android:textSize="15sp"
        android:onClick="onClick"
        android:background="#ffb8ffb8"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="끄 기"
        android:id="@+id/button3"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"/>



</RelativeLayout>


</RelativeLayout>

1개의 답변

0 추천
 
채택된 답변

xml에서 onClick 을 주시는 것보다 다른 이름 mClick 이렇게 주시고

소스에서는 리스너를 달 필요가 없이

View.OnClickListener listener=new View.OnClickListener()

        {
            public void onClick(View view) {
이부분을 리스너와 onClick 대신에
 
public void mClick(View v) {
    switch(v........
    ....
}
이렇게 주셔야 실행됩니다.
nicehee (73,100 포인트) 님이 2015년 1월 7일 답변
은빛모르포나비님이 2015년 1월 7일 채택됨
public class MainActivity extends ActionBarActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);}


    public void mClick(View view) {

        switch (view.getId()) {
            case R.id.button:


            case R.id.button2:
                Intent intent = new Intent(MainActivity.this, second.class);
                startActivity(intent);
                finish();

            case R.id.button3:
                finish();


        }

    }


이렇게하면 될까요??
...