Java 条件下的意图不';行不通

Java 条件下的意图不';行不通,java,android,android-intent,Java,Android,Android Intent,我试着搜索这个主题,但我没有找到任何对我有帮助的东西,所以我在这里问这个问题 我是一个初学者,所以我不理解很多术语,如果你回答我的问题,请尝试使用简单的语言,以便我能理解 我有一个条件,即比较两个列表中相同位置的元素,如果它们不相等,则跳转到另一个活动: if (randomColors.get(i) != userColors.get(i)) { Intent i = new Intent( GameActivity.this, GameOverActivity.class);

我试着搜索这个主题,但我没有找到任何对我有帮助的东西,所以我在这里问这个问题

我是一个初学者,所以我不理解很多术语,如果你回答我的问题,请尝试使用简单的语言,以便我能理解

我有一个条件,即比较两个列表中相同位置的元素,如果它们不相等,则跳转到另一个活动:

if (randomColors.get(i) != userColors.get(i)) {
    Intent i = new Intent( GameActivity.this, GameOverActivity.class);
    startActivity(i);
}
它显示了调试中我无法解决的错误:

java.lang.RuntimeException:无法启动活动组件信息{com.gabie212.simonsays/com.gabie212.simonsays.GameOverActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.view.view.setOnClickListener(android.view.view$OnClickListener)'

请帮助我,我是一个初学者,我不知道我的代码出了什么问题,因为我完全按照他们在课堂上教我们的那样做了

这是完整的代码 我知道这不是最好的,但这是一项进步的工作

    package com.gabie212.simonsays;

    import android.content.Context;
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    import java.util.ArrayList;

    public class GameActivity extends AppCompatActivity implements 
    View.OnClickListener {

private int i = 0;
private Thread t = new Thread();
private Button greenButton;
private Button redButton;
private Button blueButton;
private Button yellowButton;
private Button startButton;

private ArrayList<Integer> randomColors = new ArrayList<Integer>();
private ArrayList<Integer> userColors = new ArrayList<Integer>();

private GameManger gm;

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

    gm =  new GameManger(this);

    setContentView(R.layout.activity_game);
    greenButton = (Button) findViewById(R.id.btnGreen);
    redButton = (Button) findViewById(R.id.btnRed);
    blueButton = (Button) findViewById(R.id.btnBlue);
    yellowButton = (Button) findViewById(R.id.btnYellow);
    startButton = (Button) findViewById(R.id.btnStart);
    startButton.setOnClickListener(this);
    greenButton.setOnClickListener(this);
    redButton.setOnClickListener(this);
    blueButton.setOnClickListener(this);
    yellowButton.setOnClickListener(this);





}

@Override
public void onClick(View v) {

    int num;

    num= gm.getColor(4);
    randomColors.add(num);


    android.os.Handler handler = new android.os.Handler();
    //TODO if the start button is pressed multiple times simultaneously it starts the lightup loop multiple times simultaneously
    if (v.getId() == startButton.getId()) {
        for (i = 0; i < randomColors.size(); i++) //light up loop
        {
            switch (randomColors.get(i)) {
                case 1:
                    greenButton.setBackgroundResource(R.drawable.greenlightup);

                    handler.postDelayed(new Runnable()
                    {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            greenButton.setBackgroundResource(R.drawable.green);
                        }
                    }, 2000);


                    break;
                case 2:
                    redButton.setBackgroundResource(R.drawable.redlightup);
                    handler.postDelayed(new Runnable()
                    {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            redButton.setBackgroundResource(R.drawable.red);
                        }
                    }, 2000);


                    break;
                case 3:
                    blueButton.setBackgroundResource(R.drawable.bluelightup);
                    handler.postDelayed(new Runnable()
                    {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            blueButton.setBackgroundResource(R.drawable.blue);
                        }
                    }, 2000);


                    break;
                case 4:
                    yellowButton.setBackgroundResource(R.drawable.yellowlightup);
                    handler.postDelayed(new Runnable()
                    {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            yellowButton.setBackgroundResource(R.drawable.yellow);
                        }
                    }, 2000);


                    break;
            }
            handler.postDelayed(new Runnable()
            {
                public void run() {
                }

            }, 2000);
        }

        for(i=0;i<randomColors.size();i++)
        {

            if(v.getId()==greenButton.getId())
            {
                userColors.add(1);
            }
            else
            {
                if(v.getId()==redButton.getId()){
                    userColors.add(2);
                }
                else
                {
                    if(v.getId()==blueButton.getId())
                    {
                        userColors.add(3);
                    }
                    else
                    {
                        userColors.add(4);
                    }
                }


            }


        }
        for(i=0;i<randomColors.size();i++)
        {
            if(randomColors.get(i)!=userColors.get(i))
            {

                Intent i = new Intent( GameActivity.this, GameOverActivity.class);
                startActivity(i);
            }
        }



    }

}
}

提前感谢。

在您的
游戏过度活跃
中,在这一行:

againButton = (Button) findViewById(R.id.btnStart);
当您从主活动布局(
activity\u game.xml
)中引用
btnStart
时,您的
againButton
null
。无法找到此项,因为您的
GameOverActivity
正在使用
activity\u game\u over.xml
作为其布局:

setContentView(R.layout.activity_game_over);
任何视图都需要在
activity\u game\u over.xml
文件中定义,以便活动使用。您需要参考
layout/activity\u game\u over.xml

againButton = (Button) findViewById(R.id.btnAgain); // Or whatver you've named it

至于您的具体问题,即为什么
Intent
不起作用,
Intent
本身工作正常,只是由于上述问题,
GameOverActivity
无法正常启动,因此,您的应用程序会崩溃。

您确保在清单中声明类?共享
GameActivity
粘贴代码的完整代码您的按钮单击功能您正在调用的
setOnClickListener
视图不存在。你能在
GameOverActivity
中发布你关于
setOnClickListener
实例的代码吗?再次感谢,通过将againButton定义为btnAgain而不是btnStart,我已经解决了我的问题
againButton = (Button) findViewById(R.id.btnAgain); // Or whatver you've named it