Java 最奇怪的android应用程序崩溃

Java 最奇怪的android应用程序崩溃,java,android,Java,Android,我为Android2.2(sdk-8)制作了一个简单的android问答游戏。 在我的模拟器上,一切都很好,但当我尝试在我的智能手机(android 2.2)上使用该应用程序时,它在第9个问题上崩溃了 1-8个问题在我的智能手机(安卓2.2)上非常有效 8日(9日)后,它崩溃(智能手机) 在我的emulator中,一切都能完美工作,没有崩溃(Eclipse) 我确信我正在使用从eclipse中的android项目导出的.apk 知道怎么了吗 public class ETBetaActivi

我为Android2.2(sdk-8)制作了一个简单的android问答游戏。 在我的模拟器上,一切都很好,但当我尝试在我的智能手机(android 2.2)上使用该应用程序时,它在第9个问题上崩溃了

  • 1-8个问题在我的智能手机(安卓2.2)上非常有效

  • 8日(9日)后,它崩溃(智能手机)

  • 在我的emulator中,一切都能完美工作,没有崩溃(Eclipse)

  • 我确信我正在使用从eclipse中的android项目导出的.apk

知道怎么了吗

public class ETBetaActivity extends Activity implements View.OnClickListener {

    Button answer_1,
    answer_2,answer_3,
    answer_4,main;

    TextView q_textview,
    tip;

    private String a1,a2,a3,a4 = "";

    private int i1 = 0;
    public static int correct = 0;

    private boolean alive = true;

    MediaPlayer button_click;

    private String[] questions =
   {"Q1", 
    "Q2",
    "Q3", 
    "Q4",
    "Q5", //5
    "Q6", 
    "Q7", 
    "Q8", 
    "Q9", //CRASH!!!! WHAT THE FUDGE?!
    "Q10" //10
    };
    public static int question_amount = 10;
    private String[] answers_correct =
   {"Correct answer - 1",
    "Correct answer - 2",
    "Correct answer - 3", 
    "Correct answer - 4",
    "Correct answer - 5",
    "Correct answer - 6",
    "Correct answer - 7",
    "Correct answer - 8",
    "Correct answer - 9",
    "Correct answer - 10"
    };

    private String[][] answers_wrong = 
    { {"Q1-1", "Q1-2" , "Q1-3"},
      {"Q2-1", "Q2-2" , "Q2-3"},
      {"Q3-1", "Q3-2" , "Q3-3"},
      {"Q4-1", "Q4-2" , "Q4-3"},
      {"Q5-1", "Q5-2" , "Q5-3"},
      {"Q6-1", "Q6-2" , "Q6-3"},
      {"Q7-1", "Q7-2" , "Q7-3"},
      {"Q8-1", "Q8-2" , "Q8-3"},
      {"Q9-1", "Q9-2" , "Q9-3"},
      {"Q10-1", "Q10-2" , "Q10-3"}

    };


    List<String> question_list = new ArrayList<String>();
    List<String> answer_list_correct = new ArrayList<String>();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getData();
        Game(i1);
    }


    @Override
    public void onClick(View view) {
        if (alive == false) {
        //  startActivity(new Intent("com.aleksei.etb.END"));
            return;
        }
        button_click = MediaPlayer.create(this, R.raw.button_click);
        button_click.start();
        switch(view.getId()){
        case R.id.button5: //main
            break;
        case R.id.button1: //answer_1
            if(isCorrect(1))
                correct++;


            break;
        case R.id.button2: //answer_2
            if(isCorrect(2))
                correct++;

            break;
        case R.id.button3: //answer_3
            if(isCorrect(3))
                correct++;

            break;
        case R.id.button4: //answer_3
            if(isCorrect(4))
                correct++;


            break;

        default:
            break;


        }
        Game(i1);
        //correct++;
        tip.setText("");
    }


    public static int getResults(){
        int value = (int) Math.floor((correct*5)/question_amount);
        if(value <= 0)
        return 1;
        else
        return value;
    }

    private boolean isCorrect(int button){
        for (int i = 0; i < answers_correct.length; i++){
        if(button == 1 && a1 == answers_correct[i]
            || button == 2 && a2 == answers_correct[i]
            || button == 3 && a3 == answers_correct[i]
            || button == 4 && a4 == answers_correct[i])
            return true;
        }
        return false; 
    }

    private void Game(int q){
        if(i1 == question_amount) { //no more questions
            startActivity(new Intent("com.aleksei.etb.END"));
            alive = false;
            return;
        }
        try {
        main.setText("Dunno");
    /*  String answer_list[][] = {
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]},
                {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}
        }; */
        String answer_list[] = {
        answers_correct[q], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]     
        };

        Collections.shuffle(Arrays.asList(answer_list));
        answer_1.setText(answer_list[0]);
        answer_2.setText(answer_list[1]);
        answer_3.setText(answer_list[2]);
        answer_4.setText(answer_list[3]);
        a1 = answer_list[0];
        a2 = answer_list[1];
        a3 = answer_list[2];
        a4 = answer_list[3];
        q_textview.setText(questions[q]);
        /*questions = question_list.toArray(new String[question_list.size()]);
        answers_correct = answer_list_correct.toArray(new String[answer_list_correct.size()]);
        question.setText(questions[i1]);        

        answer_list_correct.remove(questions[i1]);
        question_list.remove(questions[i1]);*/
        } catch (Exception ex){}
        i1++;
    }
    private void getData(){
        //Getting the data
        main = (Button) findViewById(R.id.button5);
        answer_1 = (Button) findViewById(R.id.button1);
        answer_2 = (Button) findViewById(R.id.button2);
        answer_3 = (Button) findViewById(R.id.button3);
        answer_4 = (Button) findViewById(R.id.button4);
        q_textview = (TextView) findViewById(R.id.question);
        tip = (TextView) findViewById(R.id.answ1);

        //Making the buttons, actually work
        main.setOnClickListener(this);
        answer_1.setOnClickListener(this);
        answer_2.setOnClickListener(this);
        answer_3.setOnClickListener(this);
        answer_4.setOnClickListener(this);

        //Resets the text
        //Note to self: Replace with another ContectView
        main.setText("Begin!");
        answer_4.setText("");
        answer_3.setText("");
        answer_2.setText("");
        answer_1.setText("");
        tip.setText("");

    /*  for(String x : questions) {
            for(String y : answers_correct){

            answer_list_correct.add(y);
            question_list.add(x);

            Collections.shuffle(answer_list_correct);
            Collections.shuffle(question_list);

            }
        } */



    }


    }
附言。 这不是“END”类导致的错误,因为我已经尝试过了

if(i1 == 4)
早些打电话,效果很好


致以最诚挚的问候。

您确定这在您的模拟器上有效吗? 我在2.3.3设备上试过,在第10个问题之后,当我试着运行时,它崩溃了
startActivity(新意图(“com.aleksei.etb.END”)
。 我将它改为
startActivity(newintent(this,End.class))
,效果很好


顺便说一句,我必须在MediaPlayer初始化时删除行,因为我没有您的音乐文件

我认为这是MediaPlayer的问题。它实际上从未被释放,可能会导致一些内存问题。我也不认为每次需要使用时都有理由创建它


至于其他方面,IMO使用一些静态字段在活动之间共享值不是一件好事。阅读有关意向、附加内容和向活动传递值的信息。我想你会发现很少有这样的例子。

没有原木猫,这些都是毫无价值的。把电话记录贴出来,我怎么做到的?我只收到一条错误消息,说进程com.aleksti.etc已停止。简短指南:1)通过USB将手机连接到计算机2)确保USB调试已启用(
手机上的设置->应用程序->开发
)3)通过
窗口->显示视图->其他->日志猫
在eclipse中显示日志猫。您应该会看到一个工作区窗口,其中以不同颜色打印各种日志消息4)崩溃您的应用程序5)搜索带有标签
AndroidRuntime
的大红色部分(看起来应该像)。6) 把它贴在这里,利润!Mhm打开命令行窗口,在步骤2后运行
adb设备
。您应该看到连接到计算机的设备列表(模拟器和真实手机)。如果手机不可见,您可能需要为其安装一些USB驱动程序(取决于您的操作系统)。您可以在
ANDROID_SDK/tools
目录中找到
adb
命令。如果您不知道如何操作,请发布您的操作系统,我会写一篇简短的指南。:)好的,我想你可以在这里找到:(man LGs网站su..s)。单击顶部的移动驱动程序并选择适合您的驱动程序。不,可以与android 2.2 startActivity(new Intent(“com.aleksei.etb.END”))配合使用。我自己也试过了。(我刚才在手机上调用了它,它工作得很好)要使用“com.aleksei.etb.End”调用End类,必须在AndroidManifest中声明它@约翰谢谢你,我不知道这种方法,现在很有效。我想还有三种可能——要么是2.2Android出现问题,要么是MediaPlayer出现问题,要么是apk被破坏。我会在手机上打开调试模式,连接它并查看LogCat中显示的内容,或者只是使用断点进行调试EAH,只是与LogCat检查,它是MediaPlayer。啊,太晚了,Aleady修复了,但它是空的。我想有人给了你“-1”,因为你没有解释这里的真正问题。如果能看到堆栈跟踪并找出问题的原因,那就太好了。我们现在只知道你和MediaPlayer有一些问题。。。我也学会了在这个社区“生活”,昨天我也因为没有解释我的答案而被否决(100%的理由)。
if(i1 == 4)