Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓应用程序按钮点击监听器_Java_Android_Eclipse - Fatal编程技术网

Java 安卓应用程序按钮点击监听器

Java 安卓应用程序按钮点击监听器,java,android,eclipse,Java,Android,Eclipse,嗨,我已经构建了这个代码一个星期了,但是我仍然不能让它工作。它没有错误,但当我在AVD上运行它时,它会突然终止 package com.tryout.sample; import java.util.Random; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Text

嗨,我已经构建了这个代码一个星期了,但是我仍然不能让它工作。它没有错误,但当我在AVD上运行它时,它会突然终止

package com.tryout.sample;

import java.util.Random;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity implements View.OnClickListener{

Random number = new Random();
int Low = 1;
int High = 13;
int RandomNumber = number.nextInt(High-Low) + Low;
int current = 0;
int points=0;
final Integer[] cardid = { R.drawable.card1,
        R.drawable.card10, 
        R.drawable.card11,
        R.drawable.card12,
        R.drawable.card13,
        R.drawable.card2,
        R.drawable.card3,
        R.drawable.card4,
        R.drawable.card5,
        R.drawable.card6,
        R.drawable.card7,
        R.drawable.card8,
        R.drawable.card9,
        };
ImageView pic2 = (ImageView) findViewById(R.id.imageView1);
final TextView score = (TextView) findViewById(R.id.textView2);

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView score = (TextView) findViewById(R.id.textView2);
    Button high = (Button) findViewById(R.id.button1);
    Button low = (Button) findViewById(R.id.button2);
    final ImageView pic = (ImageView) findViewById(R.id.imageView1);        
    low.setOnClickListener(new view.OnClickListener() {
        public void onClick(View v) {
            int resource = cardid[RandomNumber];
            if(current < RandomNumber){
                points = points + 1;
                score.setText(points);
                pic.setImageResource(resource);
            }else{
                score.setText("Game Over");
            }

        }
    });
    high.setOnClickListener(new View.OnClickListener() {
        public void higher(View v) {
            int resource = cardid[RandomNumber];
            if(current > RandomNumber){
                points = points + 1;
                score.setText(points);
                pic.setImageResource(resource);
            }else{
                score.setText("Game Over");
            }

        }
    });

    int resource = cardid[RandomNumber];
    pic.setImageResource(resource);
    current = RandomNumber;

}   
}
我不知道我的问题在哪里,请检查我的代码。感谢您的帮助,请放以下内容:

ImageView pic2 = (ImageView) findViewById(R.id.imageView1);
final TextView score = (TextView) findViewById(R.id.textView2);
在调用setContentViewR.layout.activity\u main;之后的onCreate方法中

如果没有像您的案例中那样指定内容,应如何分配R.id.imageView1

ImageView pic2;
TextView score;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    pic2 = (ImageView) findViewById(R.id.imageView1);
    score = (TextView) findViewById(R.id.textView2);

当你在AVD中运行时,在logcat中查找错误,你可能会得到你做错了什么的线索
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

public class minigame_cardpairing extends Activity implements View.OnClickListener {
private static final int TOTAL_CARD_NUM = 16; 

private int[] cardId = {R.id.card01, R.id.card02, R.id.card03, R.id.card04, R.id.card05, R.id.card06, R.id.card07, R.id.card08,
                        R.id.card09, R.id.card10, R.id.card11, R.id.card12, R.id.card13, R.id.card14, R.id.card15, R.id.card16};

private Card[] cardArray = new Card[TOTAL_CARD_NUM];

private int CLICK_CNT = 0; 
private Card first, second; 
private int SUCCESS_CNT = 0; 
private boolean INPLAY = false; 

//----------- Activity widget -----------//
private Button start;
//-----------------------------------//

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.minigame_cardpairing);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


    for(int i=0; i<TOTAL_CARD_NUM; i++) {
        cardArray[i] = new Card(i/2); 
        findViewById(cardId[i]).setOnClickListener(this); 
        cardArray[i].card = (ImageButton) findViewById(cardId[i]); // Card assignment
        cardArray[i].onBack(); 
    }

    start = (Button) findViewById(R.id.start);
    start.setOnClickListener(new View.OnClickListener() {


        public void onClick(View v) {
            startGame();
            //start.setBackgroundDrawable(background);
        }
    });
    findViewById(R.id.exit).setOnClickListener(new View.OnClickListener() {


        public void onClick(View v) {
            setResult(RESULT_OK);
            finish();
        }
    });
} // end of onCreate

protected void startDialog() {
    AlertDialog.Builder alt1 = new AlertDialog.Builder(this);  
    alt1.setMessage("The match-card game. Please remember to flip the cards two by two card hand is a pair Hit. Hit all pairs are completed.")
    .setCancelable(false)
    .setPositiveButton("close", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) {           
            } 
        });  
    AlertDialog alt2 = alt1.create();        
    alt2.setTitle("Game Description");                 
    alt2.show();
}

protected void clearDialog() {
    AlertDialog.Builder alt1 = new AlertDialog.Builder(this);  
    alt1.setMessage("It fits all the cards in pairs. Congratulations.")
    .setCancelable(false)
    .setPositiveButton("close", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) {           
            } 
        });  
    AlertDialog alt2 = alt1.create();       
    alt2.setTitle("Match-complete");                  
    alt2.show();
}

@Override
protected void onStart() {
    // TODO Auto-generated method stub
    super.onStart();
    startDialog();
}

public void onClick(View v) {
    if (INPLAY) {           
        switch (CLICK_CNT) {
        case 0: 
            for (int i=0; i<TOTAL_CARD_NUM; i++) {
                if (cardArray[i].card == (ImageButton) v) {
                    first = cardArray[i];
                    break;
                }
            }
            if (first.isBack) { 
                first.onFront();
                CLICK_CNT = 1;
            }
            break;
        case 1: 
            for (int i=0; i<TOTAL_CARD_NUM; i++) {
                if (cardArray[i].card == (ImageButton) v) {
                    second = cardArray[i];
                    break;
                }
            }
            if (second.isBack) { 
                second.onFront();

                if (first.value == second.value) { 
                    SUCCESS_CNT++;
                    Log.v("SUCCESS_CNT", "" + SUCCESS_CNT);
                    if (SUCCESS_CNT == TOTAL_CARD_NUM/2) { 
                        clearDialog();
                    }
                }
                else { 
                    Timer t = new Timer(0);
                    t.start();
                }
                CLICK_CNT = 0;
            }
            break;
        }
    }
}

void startGame() {
    int[] random = new int[TOTAL_CARD_NUM];
    int x;

    for (int i=0; i<TOTAL_CARD_NUM; i++) {
        if (!cardArray[i].isBack)
            cardArray[i].onBack();
    }

    boolean dup;
    for (int i=0; i<TOTAL_CARD_NUM; i++) { 
        while(true) {
            dup = false;
            x = (int) (Math.random() * TOTAL_CARD_NUM);
            for (int j=0; j<i; j++) {
                if (random[j] == x) {
                    dup = true;
                    break;
                }
            }
            if (!dup) break;
        }
        random[i] = x;
    }

    start.setClickable(false);
    for (int i=0; i<TOTAL_CARD_NUM; i++) {
        cardArray[i].card = (ImageButton) findViewById(cardId[random[i]]);
        cardArray[i].onFront();
    }

    Log.v("timer", "start");
    Timer t = new Timer(1);
    //flag = false;
    t.start();
    /*
    while(true) {
        if (flag) break;
        //Log.v("flag", "" + flag);
    }
    Log.v("timer", "end");
    */

    SUCCESS_CNT = 0;
    CLICK_CNT = 0;
    INPLAY = true;
}

class Timer extends Thread {
    int kind;

    Timer (int kind) {
        super();
        this.kind = kind;
    }
    @Override
    public void run() {
        INPLAY = false;
        // TODO Auto-generated method stub
        try {
            if (kind == 0) {
                Thread.sleep(1000);
                mHandler.sendEmptyMessage(0);
            }
            else if (kind == 1) {
                Thread.sleep(3000);
                mHandler.sendEmptyMessage(1);
            }
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        INPLAY = true;
    }
}

Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        if (msg.what == 0) {
            first.onBack();
            second.onBack();
            first.isBack = true;
            second.isBack = true;
        }
        else if (msg.what == 1) {
            //flag = true;
            for (int i=0; i<TOTAL_CARD_NUM; i++) {
                cardArray[i].onBack();
            }
            start.setClickable(true);
        }
    }
};

}

class Card { // start of Card class
private final static int backImageID = R.drawable.cardback;
private final static int[] frontImageID = {R.drawable.card1, R.drawable.card2,
                                           R.drawable.card3, R.drawable.card4,
                                           R.drawable.card5, R.drawable.card6,
                                           R.drawable.card7, R.drawable.card8};

int value;
boolean isBack;
ImageButton card;

Card(int value) {
    this.value = value;
}

public void onBack() { 
    if (!isBack) {
        card.setBackgroundResource(backImageID);
        isBack = true;
    }
}

public void flip() { 
    if (!isBack) {
        card.setBackgroundResource(backImageID);
        isBack = true;
    }
    else {
        card.setBackgroundResource(frontImageID[value]);
        isBack = false;
    }
}

public void onFront() { 
    if (isBack) {
        card.setBackgroundResource(frontImageID[value]);
        isBack = false;
    }
}
} // end of Card class