0
public void clickImage(View v) {
        if (v.getId() == R.id.a_01_b) {
            Toast.makeText(this, "1", Toast.LENGTH_LONG).show();
        }
        else if (v.getId() == R.id.a_02_b) {
            Toast.makeText(this, "2", Toast.LENGTH_LONG).show();
        }
        else if (v.getId() == R.id.a_03_b) {
            Toast.makeText(this, "3", Toast.LENGTH_LONG).show();
        }
    }

私はこのようにmainactivity.javaに書き込みました。

そして、XMLで..各ImageViewにandroid:onClick="clickImage"と書きました。

しかし、私がここに書いた最初の文では、このような誤りがあります。

Multiple markers at this line
- Syntax error on token ")", ; expected
- Syntax error on token "(", ; expected
- void is an invalid type for the variable clickImage

..このエラーは何ですか?私は何をしなければならない..?コードに誤りはないと思います。

解決策を教えてください。

PS私はプロジェクトを掃除しましたが、それは同じです。

4

2 に答える 2

0

clickImage()XML onClickを使用すると、Androidは現在のアクティビティでのみonClickメソッドを検索することに注意してください。フラグメントを使用している場合は、これを覚えておくことが重要です。フラグメントを使用してXMLを追加した場合でも、AndroidはonClickXMLの追加に使用されたフラグメントの.javaファイルでメソッドを検索しないためです。

したがって、フレーメンを使用しているか、マルチアクティビティ呼び出しを使用しているかを知る必要があります

編集>

xmlにエラーはありません。javaアクティビティにエラーがあるようです。Javaがないため、xmlに依存しないソリューションを提供します。

ImageView im;
im = (ImageView)findViewById(R.id.a_01_b);
im.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(this, "1", Toast.LENGTH_LONG).show();
            }
        });

xmlでこれを削除します

android:onClick="clickImage"  

編集2

Javaクラスの一番上にこれを置きます:

import android.view.View.OnClickListener;
import android.widget.ImageView;

あなたのコードでこれを行います:

ImageView im;
im = (ImageView)findViewById(R.id.a_01_b);
im.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(YourActivityName.this, "1", Toast.LENGTH_LONG).show();
            }
        });

YourActivityNameあなたの活動の名前を入れる代わりに

于 2013-02-16T07:49:17.120 に答える
0

mainactivity.javaに構文エラーがあります。おそらく、clickImageメソッドを別のメソッド内に配置します。または何か他のもの、完全なコードを見ずに正確に言うことは不可能です。

于 2013-02-16T08:06:18.647 に答える