不确定为什么获取重复方法onClick(查看)

时间:2012-06-05 10:08:24

标签: android

我有一项活动 这是我正在尝试做的事情。应用程序启动时会显示图像。单击图像时,将显示下一个图像。 我已经使用main.xml和imageview完成了所有设置。 该应用程序构建并运行并显示第一个图像没有问题。 现在尝试为图像设置onclick,以便显示下一个图像。我已将android:onClick =“onClick”添加到main.xml中的图像vew。 我正在使用(这个)setOnClickListner,我为类实现了View.onClickListener,但是我设置的switch case我得到onClick(View v)的重复方法,我不知道为什么。

还试图找出findViewById我认为我的方式image1将始终显示。

在on public上获取错误onClick(View v)它是一个重复的方法。

这是我的代码。感谢您的帮助。

main.xml是一个线性布局,不确定是否重要。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ImageView
    android:id="@+id/imageView1"
    android:src="@drawable/bear"        
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:onClick="onClick"
    android:contentDescription="@string/desc"/>

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/bear_n"
    android:onClick="onClick"
    android:contentDescription="@string/desc" />

这是.java文件。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;


public class VTFCActivity extends Activity implements View.OnClickListener{

ImageView image;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    image = (ImageView) findViewById(R.id.imageView1);
    ImageView image1 = (ImageView) findViewById(R.id.imageView1);
    ImageView image2 = (ImageView) findViewById(R.id.imageView2);

    image1.setOnClickListener(this);
    image2.setOnClickListener(this);

}
public void onClick(View v) {
    switch (v.getId()){

    case R.id.imageView1:
        image.setImageResource(R.drawable.bear);
        break;
    case R.id.imageView2:
        image.setImageResource(R.drawable.bear_n);
        break;          
    }
}

3 个答案:

答案 0 :(得分:1)

使用时

image1.setOnClickListener(this);
image2.setOnClickListener(this);

您必须覆盖Android API中的默认onClick()方法:

@Override
public void onClick(View v)

还设置xml android:onClick="onClick"

将允许您从自定义onClick方法

处理clik事件

这就是抛出异常的方式:告诉你有一个重复的方法!!

所以你有两个选择:

  1. 删除android:onClick="onClick":这就是我要做的事情

  2. 删除image1.setOnClickListener(this); image2.setOnClickListener(this);并处理自定义onClick()方法上的点击

答案 1 :(得分:0)

  

现在尝试为图像设置onclick,以便下一张图像   显示。我在图像中添加了android:onClick =“onClick”   main.xml中。

如果您已在main.xml中的两个图像视图中添加了android:onClick =“onClick” 您应该删除image1.setOnClickListener(this);image2.setOnClickListener(this); 来自代码,因为你已经在main xml中指定了它。

答案 2 :(得分:-1)

这是代码......

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Button b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            final Dialog dl = new Dialog(MainActivity.this);

            dl.setContentView(R.layout.cdialog);

            dl.setTitle("Title");


            TextView txt = (TextView) dl.findViewById(R.id.textView1);

            txt.setText("Hi \n How are you \n" +
                    "Where were you \n Good to see you");

            Button btn = (Button) dl.findViewById(R.id.button1);
            btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {

                    dl.dismiss();

                }
            });
            dl.show();
        }
    });
}
}