无法找到onButtonClick方法

时间:2016-11-12 14:35:52

标签: java android

我刚刚开始学习android。我收到了这个错误。请帮我解决这个问题。

这是我的.xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.sumit.myapplication.MainActivity"
    tools:ignore="ExtraText">


    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText2"
        android:layout_alignLeft="@+id/editText2"
        android:layout_alignStart="@+id/editText2"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="43dp"
        android:id="@+id/textView"
        android:textAppearance="@style/TextAppearance.AppCompat" />

    <Button
        android:text="Sum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="97dp"
        android:id="@+id/button"
        android:elevation="10dp"
        android:layout_below="@+id/textView"
        android:layout_alignLeft="@+id/textView"
        android:layout_alignStart="@+id/textView"
        android:onClick="onButtonClick (MainActivity)" />

</RelativeLayout>

这是我的.java文件

package com.example.sumit.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onButtonClick(View v)
    {
        TextView t = (TextView)findViewById(R.id.textView);
        t.setText("sumit");

    }
}

我收到了这个错误。

  

E / EGL_emulation:tid 3738:eglSurfaceAttrib(1165):错误0x3009   (EGL_BAD_MATCH)W / OpenGLRenderer:无法设置EGL_SWAP_BEHAVIOR   表面0x7f0d46d90c40,错误= EGL_BAD_MATCH D / AndroidRuntime:正在关闭   VM E / AndroidRuntime:FATAL EXCEPTION:main               处理:com.example.sumit.myapplication,PID:3720               java.lang.IllegalStateException:无法在父级或祖先的Context中找到onButtonClick(MainActivity)(View)方法   android:在视图类上定义的onClick属性   android.support.v7.widget.AppCompatButton,带有id&#39;按钮&#39;                   在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)                   在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)                   在android.view.View.performClick(View.java:5198)                   在android.view.View $ PerformClick.run(View.java:21147)                   在android.os.Handler.handleCallback(Handler.java:739)                   在android.os.Handler.dispatchMessage(Handler.java:95)                   在android.os.Looper.loop(Looper.java:148)                   在android.app.ActivityThread.main(ActivityThread.java:5417)                   at java.lang.reflect.Method.invoke(Native Method)                   在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)                   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)   I /处理:发送信号。 PID:3720 SIG:9申请被终止。

我该如何解决这个问题? 请帮忙。

3 个答案:

答案 0 :(得分:1)

使用

android:onClick="onButtonClick" 

而不是

android:onClick="onButtonClick (MainActivity)"

视图参数由android传递。

答案 1 :(得分:1)

而不是

android:onClick="onButtonClick (MainActivity)" 

替换为:

android:onClick="onButtonClick"

请注意,使用上面的XML,Android将仅在当前活动中查找onClick方法onButtonClick()。

答案 2 :(得分:1)

好。你的stacktrace解释了它:

  

找不到方法onButtonClick(MainActivity)

名称没有方法。该名称不应包含(MainActivity)部分。

<。>在.xml中,写下:

<Button
    android:text="Sum"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="97dp"
    android:id="@+id/button"
    android:elevation="10dp"
    android:layout_below="@+id/textView"
    android:layout_alignLeft="@+id/textView"
    android:layout_alignStart="@+id/textView"
    android:onClick="onButtonClick" />