gpt4 book ai didi

android - ImageView ArrayList 给出 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 22:09:55 25 4
gpt4 key购买 nike

我在将 ImageView 存储到 ArrayList 背后的逻辑上遇到了一些问题。

我正在开发的应用程序会跟踪玩家在游戏中的状态。用户首先将 Player 对象(跟踪状态字符串和状态图像)添加到 ArrayList(以跟踪所有对象)。然后,在提交所有玩家后,会弹出一个屏幕,为每个玩家填充一个 TableRow,其中包含一个按钮(用于查看玩家的个人资料)、一个 ImageView(一个代表状态的图标)和一个 TextView(包含玩家的状态字符串)值(value))。

我对按钮和加载每个玩家的个人资料没有问题。从 dialog_select_icon.xml 加载“选择状态”GUI 时会出现问题,尤其是 ImageView ArrayList。我得到一个 NullPointerException,这对我来说没有意义,因为我做这件事的方式与我做按钮的方式基本相同。

//this code runs when user clicks a player's status icon
public void playerStatusIconClicked(View v)
{
//loop through buttons to determine which player's button was clicked
for (int i = 0; i < playerList.size(); i++)
{
if (v.getId() == playerStatusIVList.get(i).getId())
{
calledPlayer = i; //instance variable
loadStatusIconGUI();
}//if
}//for
}//method playerStatusIconClicked


//showStatusIconGUI inflates the "select status icon" GUI
//and handles the user selecting an icon
private void loadStatusIconGUI()
{
//inflate the GUI for the showStatusIcon dialog (inflater is an instance variable)
View view = inflater.inflate(R.layout.dialog_select_icon, null);
//if the list has something in it, start from fresh
if (!selectStatusIVList.isEmpty())
{
selectStatusIVList.clear();
}

//list of icons in the "select status icon" dialog
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV0));
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV1));
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV2));
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV3));
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV4));
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV5));
selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV6));

//create a dialog so user can select an icon
AlertDialog.Builder selectIconDialog = new AlertDialog.Builder(this);
selectIconDialog.setView(view); //set the Dialog's custom view
selectIconDialog.setTitle(R.string.title_select_icon);

selectIconDialog.setNegativeButton(R.string.close, null);
selectIconDialog.show();
}//showStatusIconGUI


//Handle clicks in the "select status icon" dialog
//Assigns a new status to the player
public void statusIconClicked(View v)
{
Toast message;

for (int i = 0; i < selectStatusIVList.size(); i++)
{
if (v.getId() == selectStatusIVList.get(i).getId())
{
message = Toast.makeText(
MafiaTracker.this, "new status: " statusID[i], Toast.LENGTH_SHORT);
message.show();
playerList.get(calledPlayer).setImage(imageID[i]);
playerList.get(calledPlayer).setStatus(statusID[i]);
}
}

updateViewPlayerGUI();
}

请注意,imageID[i] 和 statusID[i] 指的是包含每个状态字符串和状态图像 ID 的 int 数组。

我可以发布 xml 文件,但由于它有 124 行长,所以我不想发布。只知道 xml 文件中的每个 ImageView 都有一个 ID,所以我不明白为什么我会收到这些 NullPointerExceptions,从“if (!selectStatusIVList.isEmpty())”部分开始,然后继续每个其他电话。

请帮忙!

最佳答案

statusIconGUI 似乎是您在 setContenView() 中使用的主要布局 xml。考虑这一行:

selectStatusIVList.add((ImageView) statusIconGUI.findViewById(R.id.statusIV0));

您在 statusIconGUI 上使用 findViewbyID。而不是在您膨胀的 R.layout.dialog_select_icon 的 View 实例上执行此操作。所以,将上面的行更改为:

selectStatusIVList.add((ImageView) view.findViewById(R.id.statusIV0));

关于android - ImageView ArrayList 给出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com