如何从onClick方法获取自定义AlertDialog上的指针?

时间:2012-10-18 06:23:47

标签: android android-alertdialog

我使用layoutInflater从布局创建自定义AlertDialog。在这个布局中,我找到了我的按钮,并在这个按钮上设置了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
        }
    });

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

2 个答案:

答案 0 :(得分: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();
}
}

答案 1 :(得分: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;
        }
    }

主要关键不是使用构建器,而是自己构建它。