Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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
Android/Java:检查arraylist是否为空,然后启动另一个活动_Java_Android_Arrays_Arraylist - Fatal编程技术网

Android/Java:检查arraylist是否为空,然后启动另一个活动

Android/Java:检查arraylist是否为空,然后启动另一个活动,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我试图建立一个测验程序,在这个程序中,一个人被问到一个问题,然后必须回答,这是一个两个人的游戏,他们只需通过所有的问题,游戏就结束了 到目前为止,我所做的是将数组(strings.xml文件中的数组)加载到arraylist中,然后从0到arraylist.size获取一个随机id,然后显示该字符串(问题),然后删除该随机id并获取一个新id的常规代码 但当我运行arraylist中的所有id时,程序崩溃,我的代码如下所示: 重要的是: public void gameCode() {

我试图建立一个测验程序,在这个程序中,一个人被问到一个问题,然后必须回答,这是一个两个人的游戏,他们只需通过所有的问题,游戏就结束了

到目前为止,我所做的是将数组(strings.xml文件中的数组)加载到arraylist中,然后从0到arraylist.size获取一个随机id,然后显示该字符串(问题),然后删除该随机id并获取一个新id的常规代码

但当我运行arraylist中的所有id时,程序崩溃,我的代码如下所示:

重要的是:

public void gameCode()
{
    setContentView(R.layout.game);
    if (mList == null) 
{
     String[] mQuestions = getResources().getStringArray(R.array.mQuestions);
     mList = new ArrayList();
     Collections.addAll(mList, mQuestions);
}
     else if (mList.isEmpty()) 
{
     m = (TextView)findViewById(R.id.textView1);
         m.setText("You've run out of questions!");
}
if (wList == null) 
{
   String[] wQuestions = getResources().getStringArray(R.array.wQuestions);
   wList = new ArrayList();
   Collections.addAll(wList, wQuestions);
} 
else if (wList.isEmpty()) 
{
    w = (TextView)findViewById(R.id.textView1);
            w.setText("You've run out of questions!");
}

    //Takes a random ID from the arraylist
    int rndm = generator.nextInt(mList.size());
    int rndw = generator.nextInt(wList.size());


    //Sets the Strings to a random number from one of the array lists
    String qMan = (String) mList.get(rndm);
    String qWoman = (String) wList.get(rndw);
    if(i == 0)
        {
            //Defines that w is textView1 with the value of qWoman
            w = (TextView)findViewById(R.id.textView1);
            w.setText(qWoman);
            wList.remove(rndw);
            i = 1;
            final Button buttonNext = (Button) findViewById(R.id.buttonNext);
            buttonNext.setOnClickListener(new View.OnClickListener() 
            {
                public void onClick(View v) 
                {
                    gameCode();
                }
            });
        }
    else
        {

            m = (TextView)findViewById(R.id.textView1);
            m.setText(qMan);
            mList.remove(rndm);
            i = 0;
            final Button buttonNext = (Button) findViewById(R.id.buttonNext);
            buttonNext.setOnClickListener(new View.OnClickListener() 
            {
                public void onClick(View v) 
                {
                    gameCode();
                }
            });
       }

}  
}


源代码中有来自pastebin的注释。现在我只需要将文本更改为“You's run of questions”

使用CollectionUtils.isEmpty(),它是空安全的

您正在检查这两个数组是否为空,但当它们为空时,您没有短路逻辑的其余部分


如果mList和wList为空,您应该绕过该方法的其余部分,或者至少检查
mList.size()>0
和wList.size()>0
,然后再尝试从每个数组中获取下一个随机问题。

程序运行正常,当我用完arraylist中的项时崩溃。对。因此,当数组列表中没有更多项时,您仍在执行代码,该代码尝试随机选择一个问题并将问题文本设置到视图中。举个例子:假设wList中有0个条目,i==0,那么随机数生成器将返回0,您尝试执行wList.get(rdmn)的操作将失败。谢谢。。我在随机生成器等之前添加了一个if语句,它就像一个charm
code
if(mList.size()>0&&wList.size()>0)我应该在else if语句中使用它吗?