为什么我的数组中的所有索引在设置为另一个活动后都设置为null?

时间:2017-07-16 06:24:19

标签: android arrays

我有一个游戏应用程序,您可以进入您的库存,这是另一项活动,并选择您在玩游戏时选择的项目,然后当您返回主要游戏活动时使用项目。为了跟踪用户想要使用的6个项目中的哪一个,我创建了一个布尔数组,并在单击项目时将相应的索引设置为true,然后将其发送回主游戏活动。但当我回到主要活动时,当我尝试检查索引是否为真时,应用程序崩溃了。我使用了调试器,发现我的布尔数组中的所有索引都设置为null,但它们在库存活动中都是假的。

游戏活动

应用程序在转到if语句后崩溃。

@Override
    public void onResume(){
        super.onResume();

        //this code checks if a item was used and calls the items method
        Intent Item= getIntent();
        boolean[] usedItem = Item.getBooleanArrayExtra(Inventory.tools);
        if (usedItem[0] == true) {
            breadItem();
        } else if (usedItem[1] == true) {
            potionItem();
        } else if (usedItem[2] == true) {
            swordItem();
        } 
    }

库存活动

我暂时注释掉了我认为与问题无关的工作代码

Intent Item= null;
    public static final String tools= "an item was used";

    boolean[] itemUsed = new boolean[6];

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_inventory);

        /*bread= (ImageButton) findViewById(R.id.ibBread);
        potion =(ImageButton) findViewById(R.id.ibPotion);
        sword =(ImageButton) findViewById(R.id.ibSword);
        wings =(ImageButton) findViewById(R.id.ibWings);
        bubble =(ImageButton) findViewById(R.id.ibBubble);
        teleport =(ImageButton) findViewById(R.id.ibTeleport);*/

        Item = new Intent(Inventory.this, MainGame.class);//data sent to MainGame activity

        /*ImageButton[] items = {bread, potion, sword, wings, bubble, teleport};
        Intent bag = getIntent();
        boolean[] boolItems = bag.getBooleanArrayExtra(MainGame.booInventory);

        for(int x =0; x <6; x +=1) {

            if (boolItems[x] == false)
            {
                items[x].setImageDrawable(getDrawable(R.drawable.question_mark));
            }
        }*/

        Item.putExtra(tools, itemUsed);
    }

按下项目时将索引设置为true的六种方法之一。也在库存活动

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void breadAction(View v)//lowers hunger by 2
    {
        bread= (ImageButton) findViewById(R.id.ibBread);

        if(bread.getDrawable() != getDrawable(R.drawable.question_mark))
        {
            //set image back to question mark
            bread.setImageDrawable(getDrawable(R.drawable.question_mark));

            itemUsed[0] = true;

            Item.putExtra(tools, itemUsed);
        }
    }

0 个答案:

没有答案