1

まず第一に、私はAndoridとJavaを1週間しか使用しておらず、まったくの初心者です。

ユーザーがどのボタンをクリックしたかを知り、それを良い答えと悪い答えと比較する必要があります。

これがコードです

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.questions);



        Integer[] flags = {
            R.drawable.flag_albania,
            R.drawable.flag_andorra,
            R.drawable.flag_angola,
            R.drawable.flag_avganistan,

        };

        String[] questions = {
            "What is the flag of Albania",
            "What is the flag of Andorra",
            "What is the flag of Angola",
            "What is the flag of Avganistan",

        };



        TextView tv = (TextView) findViewById(R.id.textView1);
        int arraySize = flags.length;
        Random rand = new Random();

        ImageButton button1 = (ImageButton) findViewById(R.id.imageButton1);
        int index = rand.nextInt(arraySize);
        int questionIndex1 = index;
        button1.setImageResource(flags[index]);
        flags[index] = flags[--arraySize];

        ImageButton button2 = (ImageButton) findViewById(R.id.imageButton2);
        index = rand.nextInt(arraySize);
        int questionIndex2 = index;
        button2.setImageResource(flags[index]);
        flags[index] = flags[--arraySize];

        ImageButton button3 = (ImageButton) findViewById(R.id.imageButton3);
        index = rand.nextInt(arraySize);
        int questionIndex3 = index;
        button3.setImageResource(flags[index]);
        flags[index] = flags[--arraySize];

        ImageButton button4 = (ImageButton) findViewById(R.id.imageButton4);
        index = rand.nextInt(arraySize);
        int questionIndex4 = index;
        button4.setImageResource(flags[index]);
        flags[index] = flags[--arraySize];

        Integer[] question = {
                questionIndex1,
                questionIndex2,
                questionIndex3,
                questionIndex4
        };

        int questionArraySize = question.length;

        int questionArray = rand.nextInt(questionArraySize);

        tv.setText(questions[question[questionArray]]);

私の考えは、ランダムに選択されたquestionIndexをボタンIDと比較することですが、実際にはそれを実装する方法がわかりません。すべての助けに感謝します。

4

5 に答える 5

1

この方法を試してください:

button1.setOnClickListener(onClickListener);
  button2.setOnClickListener(onClickListener);
  /**
    *  Common click listener
    */
 OnClickListener onClickListener = new OnClickListener()
  {
    @Override
    public void onClick(View p_v)
    {
        switch (p_v.getId())
            {
                case R.id.imageButton1:
                    //Your logic here.
                    break;
                case R.id.imageButton2:
                    //Your logic here.
                    break;
            }
    }

}

于 2013-01-17T07:42:30.200 に答える
1

以下のコードを書く

public class MainActivity extends Activity implements OnClickListener{ 
    protected void onCreate(Bundle savedInstanceState) {

        /// Your Above Code ///

        tv.setText(questions[question[questionArray]]);

        Imagebutton1.setOnClickListener(this);
        Imagebutton2.setOnClickListener(this);
        Imagebutton3.setOnClickListener(this);
        Imagebutton4.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v == Imagebutton1){
            // Write Your Code Here
        } else if(v == Imagebutton2){
            // Write Your Code Here
        } else if(v == Imagebutton3){
            // Write Your Code Here
        } else if(v == Imagebutton4){
            // Write Your Code Here
        }
    }
}
于 2013-01-17T07:47:13.893 に答える
1

この縮小されたコードを使用する

ImageButton button1,button2,button3,button4;
            ImageButton imagebuttons[]={ button1,button2,button3,button4};
        int ids[]={R.id.imageButton1,R.id.imageButton2,R.id.imageButton3,R.id.imageButton4};

        for(final int i=0;i<imagebuttons.length;i++)
        {
            imagebuttons[i]=(ImageButton) findViewById(ids[i]);
    int index=rand.nextInt(arraySize);
             imagebuttons[i].setImageResource(flags[index]);
             flags[index] = flags[--arraySize];
             indexes.put(i,index);
            imagebuttons[i].setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    if( questionArray==indexes.get(i))
                    {

                    }

                }
            });

これがお役に立てば幸いです

于 2013-01-17T11:22:37.420 に答える
0

これは次のように行うことができます。まず、アクティビティにonClickリスナーを実装させます。

public class MyActivity extends Activity implements View.OnClickListener{ 

次に、アクションリスナーをボタンに設定します。

button1.setOnClickListener(this);
button2.setOnClickListener(this);
.....

次に、リスナーでIDを確認します。

public void onClick(View v) {
   switch(v.getId()){
   case R.id.imageButton1:
   break;
   case R.id.imageButton2:
   break;
   ....
   }
}
于 2013-01-17T07:42:09.043 に答える
0

この方法でもできます。ボタンのタグ値を保持するには、いくつかのint変数を使用する必要があります。また、ボタンアクション用にonClickListnerを作成する必要があります。コーディングは以下の通りです

 public class MyActivity extends Activity{

    //Define the Tag values for image buttons.
    private static final int TAG_IMAGE_BTN_1 = 0;
    private static final int TAG_IMAGE_BTN_2 = 1;
    private static final int TAG_IMAGE_BTN_3 = 2;
    private static final int TAG_IMAGE_BTN_4 = 3;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        initActivity();

    }

    private void initActivity(){
            //Initialize the image buttons via xml or from the code itself.
            //Add the onClickListner_BTN_CLICK and the corresponding tag to the image button

           imageBtn1.setTag(TAG_IMAGE_BTN_1);
           imageBtn1.setOnClickListener(onClickListner_BTN_CLICK);

           imageBtn2.setTag(TAG_IMAGE_BTN_2);
           imageBtn2.setOnClickListener(onClickListner_BTN_CLICK);
           .......................................................
           .......................................................
    }

    OnClickListener onClickListner_BTN_CLICK = new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int iTag = (Integer)v.getTag();

                switch (iTag) {
                case TAG_IMAGE_BTN_1:

                    break;
                        case TAG_IMAGE_BTN_2:

                    break;

                        case TAG_IMAGE_BTN_3:

                    break;

                        case TAG_IMAGE_BTN_4:

                    break;

                }
            }
        };


    }

アクションをキャプチャするためにタグ値を使用する利点、1)R.id .......を使用する場合、xmlファイルで値を変更する場合はswitchケースの値を変更する必要があります2)使用できますアクティビティ内のアクションごとに1つのonClickListnerのみ。

于 2013-01-17T09:23:51.100 に答える