如何避免重叠点击?

时间:2017-10-16 10:37:26

标签: android onclick

我正在使用相对布局,我在图像视图上放置了一个按钮。

问题是我在按钮和图像视图上都使用OnClick引用了不同的方法,即点击时按钮调用方法,单击时图像调用不同方法。当我点击按钮时,App强制退出,即具有运行时异常。

activity_main.xml中

<Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="click"
       android:onClick="sampleClick"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true"
       android:layout_marginTop="125dp"
       android:id="@+id/button" />

   <ImageView
       android:id="@+id/imageView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       app:srcCompat="@drawable/oreo"
       android:onClick="imageClick"
       android:layout_alignParentTop="true"
       android:layout_alignParentStart="true" />

MainActivity.java

public void sampleClick(View view){
        Toast.makeText(MainActivity.this,"Button Click",Toast.LENGTH_LONG).show();

    }

    public void imageClick(View view){
        Toast.makeText(MainActivity.this,"Image Click",Toast.LENGTH_LONG).show();
    }

帮我解决错误。

enter image description here

2 个答案:

答案 0 :(得分:2)

从布局xml文件中删除onClick,在运行时在视图上设置单击侦听器

在java文件中

//setting click listeners

findViewById(R.id.imageView).setOnClickListener(this);
findViewById(R.id.button).setOnClickListener(this);

//implement you java class with View.OnClickListener interface and override onClick method

@Override
public void onClick(View v){

       switch(v.getId()){

             case R.id.imageView:
                  Toast.makeText(MainActivity.this,"Image Click",Toast.LENGTH_LONG).show();
                  break;

             case R.id.button:
                  Toast.makeText(MainActivity.this,"Button Click",Toast.LENGTH_LONG).show();
                  break;

       }
}

答案 1 :(得分:1)

尝试切换它们。

<ImageView
   android:id="@+id/imageView"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   app:srcCompat="@drawable/oreo"
   android:onClick="imageClick"
   android:layout_alignParentTop="true"
   android:layout_alignParentStart="true" />

<Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="click"
   android:onClick="sampleClick"
   android:layout_alignParentTop="true"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="125dp"
   android:id="@+id/button" />

这样Button就会在'ImageView

之上