1

異なるアクティビティを実行する 2 つのダイアログがあります。

私の質問は、単一の 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 に答える