1

我有两个执行不同活动的对话框。

我的问题是我可以使用单个 onclicklistener 来执行不同的功能吗?

例如:

private OnClickListener onOkClickListener = new OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which)
        {
                   if ( first dialog's ok button clicked)
                   {    
                        /*  some actions*/
                   }
                   else if ( second dialog's ok button clicked)
                   {
                        /*  some other actions*/
                   }

            }
    };

有人请帮我做这件事..

4

2 回答 2

1

这些对话框和片段以及所有按钮都可以使用两个或多个按钮的单个侦听器...

我已经通过一些教程计算出来了。这就是答案。

通过将 tagName 设置为那些特定的对话框或片段,我们可以区分上下文并可以重用相同的侦听器。
示例代码:

dialog.show(getFragmentManager(), fragment1_tag);

dialog.show(getFragmentManager(), fragment2_tag);

下面是唯一一个将被标签名称重用的侦听器。

View.onClickListener okButtonListener(new View.onClickListener{
   public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
   {
     if( view.getTag().equals("fragment1_tag") )
     {
        //Do operation
     }
     else if( view.getTag().equals("fragment2_tag") )
     {
        //Do operations
     }
   }
});
于 2013-11-28T11:11:56.777 回答
0

是的。您可以使用。考虑这个例子......

    final DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            AlertDialog alertDialog = (AlertDialog) dialog;
            String s = (String) alertDialog.getButton(
                    DialogInterface.BUTTON_POSITIVE).getTag();
            boolean isDialog1 = s.equals("DIALOG1");
            switch (which) {
            case DialogInterface.BUTTON_NEGATIVE:
                if(isDialog1) {
                    Toast.makeText(getApplicationContext(), "Negative in Dialog1", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Negative in Dialog2", Toast.LENGTH_SHORT).show();
                }
                break;
            case DialogInterface.BUTTON_NEUTRAL:
                if(isDialog1) {
                    Toast.makeText(getApplicationContext(), "Neutral in Dialog1", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Neutral in Dialog2", Toast.LENGTH_SHORT).show();
                }
                break;
            case DialogInterface.BUTTON_POSITIVE:
                if(isDialog1) {
                    Toast.makeText(getApplicationContext(), "Positive in Dialog1", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Positive in Dialog2", Toast.LENGTH_SHORT).show();
                }
                break;

            default:
                break;
            }
        }
    };

button1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(
                    SecondActivity.this);
            builder.setTitle("Dialog1 Title");
            builder.setMessage("Dialog1 Message");
            builder.setPositiveButton("Yes", clickListener);
            builder.setNegativeButton("No", clickListener);
            builder.setNeutralButton("Cancel", clickListener);
            AlertDialog alertDialog = builder.create();
            alertDialog.show();
            alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setTag(
                    "DIALOG1");
        }
    });

button2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(
                    SecondActivity.this);
            builder.setTitle("Dialog2 Title");
            builder.setMessage("Dialog2 Message");
            builder.setPositiveButton("Yes", clickListener);
            builder.setNegativeButton("No", clickListener);
            builder.setNeutralButton("Cancel", clickListener);
            AlertDialog alertDialog = builder.create();
            alertDialog.show();
            alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setTag(
                    "DIALOG2");
        }
    });
于 2013-11-07T12:15:55.637 回答