我的Main Actitivy中有一个List Item,它包含本地File对象(自定义类):
public static ArrayList<localFile> inventoryItems = new ArrayList<localFile>();
我在主要活动中初始化了一个Dialog:
Dialog weaponDialog;
然后在创建方法中我做了这个:
Dialog weaponDialog = new Dialog(this);
weaponDialog.setContentView(R.layout.weapon_info);
武器对话框的内容视图现在设置为以XML格式创建的自定义视图:
<TableLayout
android:id="@+id/shipInfoView"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/inv"
android:background="@drawable/green_border_full"
android:divider="#00000000"
android:maxLength="40"
android:padding="5dp"
android:scrollHorizontally="false"
android:textColor="@color/Green"
android:textSize="12sp" >
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/itemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="@color/Green"
android:textSize="12sp" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/plrLvl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Damage:"
android:textColor="@color/Green"
android:textSize="12sp" />
<TextView
android:id="@+id/wpnDamage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="@color/Green"
android:textSize="12sp" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/wpnWeight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Weight: "
android:textColor="@color/Green"
android:textSize="12sp" />
<TextView
android:id="@+id/wpnWeightA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="@color/Green"
android:textSize="12sp" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Rarity:"
android:textColor="@color/Green"
android:textSize="12sp" />
<TextView
android:id="@+id/wpnRarity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/Green"
android:textSize="12sp" />
</TableRow>
</TableLayout>
所述listView有一个ItemClick Listener:
inventoryList.setClickable(true);
inventoryList
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
localFile file = (localFile) inventoryList
.getItemAtPosition(position);
showItem(file);
}
});
}
每次单击列表视图中的项目时,都会出现一个对话框,其中包含上面传递的文件中的信息:
public void showItem(localFile file) {
TextView wpnName = (TextView) weaponDialog.findViewById(R.id.itemName);
TextView wpnDmg = (TextView) weaponDialog.findViewById(R.id.wpnDamage);
TextView wpnWei = (TextView) weaponDialog.findViewById(R.id.wpnWeightA);
TextView wpnRar = (TextView) weaponDialog.findViewById(R.id.wpnRarity);
wpnName.setText(file.name);
String sizeStr = String.valueOf(file.size);
wpnDmg.setText(sizeStr);
wpnWei.setText(sizeStr);
weaponDialog.show();
}
每次按下列表视图中的项目时,我的show Item方法中都会出现空指针异常。这是由这一行引起的:
weaponDialog.show();
有人可以帮助我吗?
感谢您的时间:)
答案 0 :(得分:1)
您将对话框声明为全局但同样具有相同的变量名称,您可以在本地对话框进行初始化。因此全局变量未初始化为null。
Dialog weaponDialog = new Dialog(this);
所以在这一行中删除Dialog
这里它是一个局部变量.so并将其改为
weaponDialog = new Dialog(this);
并尝试设置对话框文本..