我已经看到有一些类似的问题,但到目前为止,这些答案对我没有帮助。完整错误:
java.lang.IllegalStateException:找不到方法onClick(查看) 在父或祖先的上下文中为android:onClick属性定义 在具有id的视图类android.support.v7.widget.AppCompatButton上 'button_random'
班级( StartActivity.java ):
public class StartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
}
public void onClick(View v) {
Log.d("DEBUG", "CLICKED " + v.getId());
}
}
XML( activity_start.xml ):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Random Game"
android:id="@+id/button_random"
android:layout_gravity="center_horizontal"
android:onClick="onClick" />
</LinearLayout>
我已将活动添加到AndroidManifest.xml。我有类似的活动,以同样的方式工作,我没有任何问题......
有人看到我遗失某些东西或犯了错误的东西吗?
答案 0 :(得分:3)
请将onClick
方法重命名为其他方法,Android认为您正在通过onClick
接口公开的View.java
调用内部OnClickListener
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Random Game"
android:id="@+id/button_random"
android:layout_gravity="center_horizontal"
android:onClick="myOnClick" />
以及您的活动
public class StartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
}
public void myOnClick(View v) {
Log.d("DEBUG", "CLICKED " + v.getId());
}
}
您可以查看View文档here
答案 1 :(得分:2)
我遇到了同样的问题,在我的情况下,我将XML中的android.support.v7.widget.AppCompatButton
更改为 <Button
.... />
并且它有效。
错误代码:
<android.support.v7.widget.AppCompatButton
.... />
固定代码:
{{1}}
答案 2 :(得分:1)
就我而言,我错过了结尾处的右括号。
android:onClick =“ @ {(v)-> CommentHandler.selectGallery(v)”“。
It should be like this.
android:onClick="@{(v) -> CommentHandler.selectGallery(v)}".
答案 3 :(得分:0)
您需要更改android.support.v7.widget.AppCompatButton
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.AppCompatButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Random Game"
android:id="@+id/button_random"
android:layout_gravity="center_horizontal"
android:onClick="onClick" />
</LinearLayout>
答案 4 :(得分:0)
我遇到了同样的问题,就我而言,我有2个活动使用相同的布局,因此当我更改OnClick
事件名称时,它将在其他活动中崩溃,请尝试检查setContentView
布局活动崩溃