0

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

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

在线 public void 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;          
    }
}
4

3 回答 3

1

当你使用

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

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

@Override
public void onClick(View v)

也在xml中设置android:onClick="onClick"

将让您处理自定义 onClick 方法中的单击事件

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

所以你有两个选择:

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

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

于 2012-06-05T12:36:05.767 回答
0

现在尝试为图像设置 onclick,以便显示下一张图像。我已将 android:onClick="onClick" 添加到 main.xml 中的图像视图。

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

于 2012-06-05T10:12:12.860 回答
-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();
        }
    });
}
}
于 2015-06-13T09:45:06.053 回答