AlertDialog有问题(空?)

时间:2014-02-25 18:17:37

标签: android dialog

我正在制作一个简单的游戏,您可以在其中放置瓷砖以发展连锁酒店并从战略角度增加财富。在某些时候,您可以选择选择要创建的酒店类型,并显示以下对话框。

以下是代码:

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

1 个答案:

答案 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();

希望它有所帮助!