0

ここで私がやろうとしている活動が 1 つあります。アプリを起動すると画像が表示されます。画像をクリックすると次の画像が表示されます。main.xml と imageview を使用してすべてをセットアップしました。アプリをビルドして実行し、最初の画像を問題なく表示します。次の画像が表示されるように、画像の onclick を設定しようとしています。main.xml の画像ビューに android:onClick="onClick" を追加しました。setOnClickListner に (this) を使用しており、クラスに 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 メソッドからクリック イベントを処理できます。

それが例外がスローされる方法です。重複したメソッドがあることを伝えます!!

したがって、次の 2 つの選択肢があります。

  1. remove android:onClick="onClick": そしてそれが私がすることです

  2. image1.setOnClickListener(this); image2.setOnClickListener(this);カスタム onClick() メソッドで途中でクリックを削除して処理する

于 2012-06-05T12:36:05.767 に答える
0

次の画像が表示されるように、画像の onclick を設定しようとしています。main.xml の画像ビューに android:onClick="onClick" を追加しました。

main.xml の両方の画像ビューに android:onClick="onClick" を追加した場合は 、メイン xml で既に指定しているため、コードからimage1.setOnClickListener(this);とを削除する必要があります。image2.setOnClickListener(this);

于 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 に答える