Android / Java: проверьте, не заполнен ли arraylist, а затем запустите другое действие - PullRequest
3 голосов
/ 01 ноября 2011

Я пытаюсь создать эту программу викторины, в которой человеку задают вопрос, а затем он должен ответить. Это игра для двух человек, и они просто отвечают на все вопросы, и игра заканчивается.

На данный момент мне удалось сделать общий код для загрузки массива (массива в файле strings.xml) в arraylist, а затем принять случайный идентификатор от 0 до arraylist.size и затем показать эту строку (Вопросы)затем он удаляет случайный идентификатор и получает новый.

Но когда я запускаю все идентификаторы в массиве, программа вылетает, мой код выглядит так: http://pastebin.com/MaEj49BL

Важная часть заключается в следующем:

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.Сейчас мне просто нужно изменить текст на «У вас закончились вопросы»

Ответы [ 2 ]

4 голосов
/ 01 ноября 2011

Вы проверяете, являются ли 2 массива пустыми, но вы не закорачиваете оставшуюся часть логики, когда они ...

, если mList и wList пусты, вы должны обойтиостаток метода или, как минимум, проверьте, что mList.size() > 0 and wList.size()>0, прежде чем пытаться получить следующий случайный вопрос из каждого массива.

1 голос
/ 01 ноября 2011

Используйте CollectionUtils.isEmpty (), который является нулевым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...