我正在制作一个简单的游戏,您可以在其中放置瓷砖以发展连锁酒店并从战略角度增加财富。在某些时候,您可以选择选择要创建的酒店类型,并显示以下对话框。
以下是代码:
public void convertToHotelDialog(final Tile tile){
if(AVAILABLE_HOTELS.size() != 0){
String[] tempHotel = new String[AVAILABLE_HOTELS.size()];
AlertDialog.Builder hotelDialog = new AlertDialog.Builder(this);
hotelDialog.setTitle(this.getResources().getString(R.string.hotel_dialog_title));
hotelDialog.setMessage(this.getResources().getString(R.string.hotel_dialog_message));
for (int i = 0; i < AVAILABLE_HOTELS.size(); i++) {
tempHotel[i] = new String();
tempHotel[i] = AVAILABLE_HOTELS.get(i);
}
hotelDialog.setItems(tempHotel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
String hotelName = AVAILABLE_HOTELS.get(which);
convertToHotel(tile, getHotelCodeByName(hotelName));
}
});
hotelDialog.show();
} else {
AlertDialog.Builder hotelDialog = new AlertDialog.Builder(this);
hotelDialog.setTitle(this.getResources().getString(R.string.hotel_dialog_title));
hotelDialog.setMessage(this.getResources().getString(R.string.hotel_dialog_fail_message));
hotelDialog.show();
}
}
我运行调试器并逐步完成它。它正逐步执行代码的 IF 部分,但对话框显示为完全为空。 标题是正确的,但消息和微调器不存在。
也许我完全不了解setItems是如何工作的?
非常感谢任何帮助。提前致谢, JRad
答案 0 :(得分:1)
您可以使用以下方法在对话框中创建一个列表,我使用这样的方法在我的应用程序上制作电话列表:
AlertDialog.Builder builderSingle = new AlertDialog.Builder(YourActivity.this);
builderSingle.setIcon(R.drawable.yourIcon);
builderSingle.setTitle(this.getResources().getString(R.string.hotel_dialog_title));
final ArrayAdapter<String> arrayAdapterHotels = new ArrayAdapter<String>(YourActivity.this,android.R.layout.simple_expandable_list_item_1, AVAILABLE_HOTELS);
builderSingle.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builderSingle.setAdapter(arrayAdapterHotels,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
String hotelName = AVAILABLE_HOTELS.get(which);
convertToHotel(tile, getHotelCodeByName(hotelName));
}
});
builderSingle.show();
希望它有所帮助!