我刚刚开始学习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申请被终止。
我该如何解决这个问题? 请帮忙。
答案 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)
部分。
<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" />