为什么我无法让我的alertdialog.builder在我的屏幕上显示()

时间:2015-06-30 08:39:09

标签: java android dialog android-alertdialog

我正在尝试使用alertdialog.builder弹出一些卡片。即使我做了.create()。show();对话框没有显示在我的屏幕上。我不确定是什么导致了这个问题。

我已经标记了我在评论中没有得到任何结果的地方。

Java代码:

ImageView image_questionmark= new ImageView(this);

final ImageView image_pass = new ImageView(this);
final ImageView image_youpay = new ImageView(this);

image_questionmark.setImageResource(R.drawable.card_questionmark);
image_pass.setImageResource(R.drawable.card_pass);
image_youpay.setImageResource(R.drawable.card_youpay);

AlertDialog.Builder dialog = new AlertDialog.Builder(PayActivity.this);
for(int i=0; i<people; i++) {
    /*PASS*/
    if(array[i] == 0) {
        dialog.setView(image_questionmark);
        dialog.setPositiveButton("FLIP", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                new AlertDialog.Builder(PayActivity.this)
                        .setView(image_pass)
                        .setPositiveButton("NEXT", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                finish(); /*move on to next value in array*/
                            }
                        }).create().show(); /*HERE: Nothing showed on my screen when running debugger...*/
            }
        });
        dialog.create().show();
        /*If not the first card, show previous card*/
        if(i!=0) {
            dialog.setNegativeButton("PREVIOUS", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            i--; /*return to previous value in array*/
        } /*First card*/
        else {
            dialog.setNegativeButton("PREVIOUS", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "No previous card", Toast.LENGTH_LONG).show();
                }
            });
        }
    }/*YOU PAY*/
    else {
        dialog.setView(image_questionmark);
        dialog.setPositiveButton("FLIP", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                new AlertDialog.Builder(PayActivity.this)
                        .setView(image_youpay)
                        .setPositiveButton("NEXT", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                finish(); /*move on to next value in array*/
                            }
                        }).create().show();
            }
        });
        dialog.create().show();
        /*If not the first card, show previous card*/
        if(i!=0) {
            dialog.setNegativeButton("PREVIOUS", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            i--; /*return to previous value in array*/
        } /*First card*/
        else {
            dialog.setNegativeButton("PREVIOUS", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "No previous card", Toast.LENGTH_LONG).show();
                }
            });
        }
    }
}

感谢您的时间:)

3 个答案:

答案 0 :(得分:0)

我没有尝试你的代码。但你可以尝试一下 - 首先启动您的图像对象,然后分配给另一个最终变量。 我认为它会奏效。

ImageView image_pas1 = new ImageView(this);
    final ImageView image_youpay = new ImageView(this);

image_questionmark.setImageResource(R.drawable.card_questionmark);
image_pass1.setImageResource(R.drawable.card_pass);
image_youpay.setImageResource(R.drawable.card_youpay);
final ImageView image_pass=image_pass;

答案 1 :(得分:0)

您需要为LayoutParams设置ImageView才能知道如何绘制自己。也许是这样的:

image_questionmark.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, // width
LayoutParams.WRAP_CONTENT)); // height

并为您的其他2 ImageViews

执行此操作

答案 2 :(得分:0)

首先,对话需要

buildervariablename.create();

只。 其次,每个Dialog都必须处于单独的类中,如下所示:

public class TestDialog extends DialogFragment
{
// Put your dialog code in here
}

然后你只需要在那里调用你的对话框。在另一个方法或甚至另一个对话框中,使用以下内容:

DialogFragment fragment = new TestDialog();
fragment.show(getFragmentManager(),"testdialog");

希望这对您有所帮助,如果您还有其他问题,请回答这个问题。