在android:onClick属性的父级或祖先上下文中找不到方法

我有一个接受点击的图像,当点击时应该打开一个xml布局。


这是包含可点击图像的xml文件:


<?xml version="1.0" encoding="utf-8"?>

<ScrollView 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"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    tools:context="com.abcd.myapp.myabcdapp.activities.BeginnersActivity">


    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:app="http://schemas.android.com/apk/res-auto"

        android:layout_width="match_parent"

        android:layout_height="match_parent">


        <ImageView

            android:id="@+id/imageView1"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:layout_marginEnd="8dp"

            android:layout_marginStart="8dp"

            android:layout_marginTop="8dp"

            android:onClick="openHelp1"

            .../>

从中可以看到,tools:context我已经包含了BeginnersActivity。这是我所拥有的BeginnersActivity.java:


public class BeginnersActivity extends AppCompatActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_beginners);

        UiHelper.hideSystemBar(this);

    }

    public void openHelp1(View view) {

        Intent i = new Intent(this, Help1Activity.class);

        startActivity(i);

    }

    ...

当我单击imageView1应用程序崩溃并在调试模式下时,我看到以下消息:


致命例外:main

java.lang.IllegalStateException:在父级或祖先上下文中找不到android:onClick属性的方法openHelp1(View),该属性是

在Android的视图类android.support.v7.widget.AppCompatImageView上标识为“ imageView1”的属性。 support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:423)


我有什么想念的或者做错了吗?


守着一只汪
浏览 235回答 2
2回答

至尊宝的传说

openHelp1在使用带有属性的xlm文件的同一活动类中,您必须具有“&nbsp;”方法android:onClick="openHelp1"您不能以这种方式从另一个活动中调用方法。

Helenr

您可以通过OnClickListener直接设置一个来避免这种情况:@Overrideprotected void onCreate(Bundle savedInstanceState) {&nbsp; &nbsp; super.onCreate(savedInstanceState);&nbsp; &nbsp; setContentView(R.layout.activity_help1);&nbsp; &nbsp; ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);&nbsp; &nbsp; imageView1.setOnClickListener(new OnClickListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View view) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; openHelp1(view);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java