我有一个游戏应用程序,您可以进入您的库存,这是另一项活动,并选择您在玩游戏时选择的项目,然后当您返回主要游戏活动时使用项目。为了跟踪用户想要使用的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);
}
}