0

AlertDialog使用 layoutInflater 从布局创建自定义。在这个布局中,我找到了我的按钮并设置了OnClickListener这个按钮。问题是,方法onClick不存在DialogInterface,我做不到dialog.dissmiss。我怎样才能在我的 AlertDialog 上获得指针,或者在 上DialogInterface

    AlertDialog.Builder builder;
    LayoutInflater inflater = (LayoutInflater) myApp.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.my_dialog, null);
    ((Button) layout.findViewById(R.id.downloadButton)).setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //in this, i want to dissmiss dialog
            //some code
        }
    });

我不希望将指针保存在 Class 属性上的 Dialog 上 - 也许存在其他方式?谢谢 :)

4

2 回答 2

0

您可以使用 Dialog 类按照以下方式进行操作。

final Dialog dialog = new Dialog(MAinActivity.this);
dialog.setContentView(R.layout.login_popup);
Button dialogButtonOk = (Button) dialog.findViewById(R.id.dialogButtonOK);

dialogButtonOk.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                       dialog.dismiss();
}
}
于 2012-10-18T10:55:06.410 回答
0

我只是在做这个......我希望我没有删除任何与你正在做的事情无关的重要内容。

public class updateDialog extends AlertDialog implements AlertDialog.OnClickListener {
    updateDialog(Context context, Object sent)
    {
        super(context,R.style.MyAlertDialogStyle);
        // Inflate your view
        View myView = getLayoutInflater().inflate(R.layout.update_sql,null);
        // Set it to be the view
        setView(myView);
        // Set up buttons
        setButton(BUTTON_NEGATIVE, context.getString(Cancel), this);
        setButton(BUTTON_NEUTRAL,context.getString(R.string.Propose), this);
        setButton(BUTTON_POSITIVE, context.getString(R.string.Restore),  this);
    }

    // Handle buttons
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        switch (i)
        {
            case BUTTON_NEGATIVE:
                // Dismiss the dialog.
                dialogInterface.dismiss();
                break;
            case BUTTON_NEUTRAL:
                break;
            case BUTTON_POSITIVE:
                break;
        }
    }

大多数情况下,关键不是使用构建器,而是自己构建它。

于 2016-10-29T11:58:19.010 回答