android - কিভাবে অ্যান্ড্রয়েডে হ্যাঁ/না ডায়ালগ বাক্স প্রদর্শন করবেন?




alertdialog (10)

1. তৈরি সতর্কতা ডায়ালগ সেট বার্তা, শিরোনাম এবং ইতিবাচক, নেতিবাচক বোতাম:

final AlertDialog alertDialog = new AlertDialog.Builder(this)
                        .setCancelable(false)
                        .setTitle("Confirmation")
                        .setMessage("Do you want to remove this Picture?")
                        .setPositiveButton("Yes",null)
                        .setNegativeButton("No",null)
                        .create();

2. এখন DialogInterface এ উভয় বোতাম খুঁজুন তারপর setOnClickListener () এ ক্লিক করুন:

alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialogInterface) {
                Button yesButton = (alertDialog).getButton(android.app.AlertDialog.BUTTON_POSITIVE);
                Button noButton = (alertDialog).getButton(android.app.AlertDialog.BUTTON_NEGATIVE);
                yesButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //Now Background Class To Update Operator State
                        alertDialog.dismiss();
                        Toast.makeText(GroundEditActivity.this, "Click on Yes", Toast.LENGTH_SHORT).show();
                        //Do Something here 
                    }
                });

                noButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        alertDialog.dismiss();
                        Toast.makeText(GroundEditActivity.this, "Click on No", Toast.LENGTH_SHORT).show();
                        //Do Some Thing Here 
                    }
                });
            }
        });

3. অ্যালার্টডিয়ালগ দেখান:

alertDialog.show();

দ্রষ্টব্য: AlertDialog এর সাথে চূড়ান্ত কীওয়ার্ড ভুলবেন না।

হ্যাঁ, আমি জানি AlertDialog.Builder আছে, তবে অ্যান্ড্রয়েডে একটি কথোপকথন প্রদর্শনের জন্য কতটা কঠিন (ভাল, অন্তত প্রোগ্রামার-বান্ধব নয়) জানতে পেরে আমি অবাক হয়ে আছি।

আমি একটি .NET বিকাশকারী ব্যবহার করতাম, এবং আমি অবাক হচ্ছি নিম্নলিখিত কোনও Android এর সমতুল্য?

if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
    // Do something...
}

AlertDialog.Builder সত্যিই ব্যবহার করা কঠিন নয়। এটি নিশ্চিত করার জন্য প্রথমে কিছুটা ভয়ংকর, তবে একবার এটি ব্যবহার করার পরে এটি সহজ এবং কার্যকর উভয়। আমি জানি তুমি জানো এটা কিভাবে ব্যবহার করতে হবে, কিন্তু এখানে যাইহোক এটি একটি সহজ উদাহরণ:

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            //Yes button clicked
            break;

        case DialogInterface.BUTTON_NEGATIVE:
            //No button clicked
            break;
        }
    }
};

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
    .setNegativeButton("No", dialogClickListener).show();

আপনি যদি DialogInterface.OnClickListener পুনর্ব্যবহার করতে পারেন তবে অন্য হ্যা / নো বক্সগুলিতে একই জিনিসটি করা উচিত।

আপনি যদি View.OnClickListener থেকে ডায়ালগ তৈরি করেন তবে আপনি কনটেক্সট পেতে view.getContext() ব্যবহার করতে পারেন। অন্যথায় আপনি আপনার yourFragmentName.getActivity() ব্যবহার করতে পারেন।


আপনি কোটলিন এ এত সহজ করতে পারেন:

 alert("Testing alerts") {
    title = "Alert"
    yesButton { toast("Yess!!!") }
    noButton { }
}.show()

আপনি সিদ্ধান্তের জন্য একটি জেনেরিক সমাধান বাস্তবায়ন করতে পারেন এবং অন্য ক্ষেত্রে ব্যবহার করতে পারেন না শুধু হ্যাঁ / না এবং অ্যানিমেশন বা বিন্যাসের সাথে সতর্কতা কাস্টমাইজ করুন:

এটার মতো কিছু; প্রথম স্থানান্তর datas জন্য আপনার বর্গ তৈরি করুন:

public class AlertDecision {

    private String question = "";
    private String strNegative = "";
    private String strPositive = "";

    public AlertDecision question(@NonNull String question) {
        this.question = question;
        return this;
    }

    public AlertDecision ansPositive(@NonNull String strPositive) {
        this.strPositive = strPositive;
        return this;
    }

    public AlertDecision ansNegative(@NonNull String strNegative) {
        this.strNegative = strNegative;
        return this;
    }

    public String getQuestion() {
        return question;
    }

    public String getAnswerNegative() {
        return strNegative;
    }

    public String getAnswerPositive() {
        return strPositive;
    }
}

ফলাফল ফিরে জন্য একটি ইন্টারফেস পরে

public interface OnAlertDecisionClickListener {

    /**
     * Interface definition for a callback to be invoked when a view is clicked.
     *
     * @param dialog the dialog that was clicked
     * @param object The object in the position of the view
     */
    void onPositiveDecisionClick(DialogInterface dialog, Object object);
    void onNegativeDecisionClick(DialogInterface dialog, Object object);
}

এখন আপনি সহজেই অ্যাক্সেসের জন্য একটি ইউটিলিটি তৈরি করতে পারেন (এই ক্লাসে আপনি সতর্কতার জন্য বিভিন্ন অ্যানিমেশন বা কাস্টম বিন্যাস বাস্তবায়ন করতে পারেন):

public class AlertViewUtils {

    public static void showAlertDecision(Context context,
                                         @NonNull AlertDecision decision,
                                         final OnAlertDecisionClickListener listener,
                                         final Object object) {

        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setMessage(decision.getQuestion());
        builder.setPositiveButton(decision.getAnswerPositive(),
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        listener.onPositiveDecisionClick(dialog, object);
                    }
                });

        builder.setNegativeButton(decision.getAnswerNegative(),
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        listener.onNegativeDecisionClick(dialog, object);
                    }
                });

        android.support.v7.app.AlertDialog dialog = builder.create();
        dialog.show();
    }
}

এবং কার্যকলাপ বা ফাঁক শেষ কল; আপনি এই ক্ষেত্রে বা অন্যান্য কাজের জন্য এটি ব্যবহার করতে পারেন:

public class MainActivity extends AppCompatActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
        initResources();
    }

    public void initResources() {
        Button doSomething = (Button) findViewById(R.id.btn);
        doSomething.setOnClickListener(getDecisionListener());
    }

    private View.OnClickListener getDecisionListener() {
        return new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDecision decision = new AlertDecision()
                        .question("question ...")
                        .ansNegative("negative action...")
                        .ansPositive("positive action... ");
                AlertViewUtils.showAlertDecision(MainActivity.this,
                        decision, getOnDecisionListener(), v);
            }
        };
    }

    private OnAlertDecisionClickListener getOnDecisionListener() {
        return new OnAlertDecisionClickListener() {
            @Override
            public void onPositiveDecisionClick(DialogInterface dialog, Object object) {

                //do something like create, show views, etc...
            }

            @Override
            public void onNegativeDecisionClick(DialogInterface dialog, Object object) {
                //do something like delete, close session, etc ...
            }
        };
    }
} 

এখানে সমস্ত উত্তর লম্বা এবং পাঠক-বান্ধব কোডের জন্য উষ্ণ হয় না: কেবলমাত্র ব্যক্তি যা জিজ্ঞাসা করে সেগুলি এড়িয়ে চলার চেষ্টা করে। আমার কাছে, এখানে lambdas নিযুক্ত করা সবচেয়ে সহজ পদ্ধতি ছিল:

new AlertDialog.Builder(this)
        .setTitle("Are you sure?")
        .setMessage("If you go back you will loose any changes.")
        .setPositiveButton("Yes", (dialog, which) -> {
            doSomething();
            dialog.dismiss();
        })
        .setNegativeButton("No", (dialog, which) -> dialog.dismiss())
        .show();

অ্যান্ড্রয়েডের ল্যামডাসসটি পুনরায়rolambda প্লাগইনটি প্রয়োজন ( https://github.com/evant/gradle-retrolambda ), তবে এটি যেকোন উপায়ে ক্লিনার কোড লেখার ক্ষেত্রে অত্যন্ত সহায়ক।


এটা চেষ্টা কর:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Confirm");
builder.setMessage("Are you sure?");

builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {
        // Do nothing but close the dialog

        dialog.dismiss();
    }
});

builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {

        // Do nothing
        dialog.dismiss();
    }
});

AlertDialog alert = builder.create();
alert.show();

কোটলিনে:

AlertDialog.Builder(this)
    .setTitle(R.string.question_title)
    .setMessage(R.string.question_message)
    .setPositiveButton(android.R.string.yes) { _, _ -> yesClicked() }
    .setNegativeButton(android.R.string.no) { _, _ -> noClicked() }
    .show()

ধন্যবাদ nikki আপনার উত্তর আমাকে অনুসরণ হিসাবে আমার পছন্দসই কর্ম যোগ করে একটি বিদ্যমান সহজে উন্নত সাহায্য করেছে

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Do this action");
builder.setMessage("do you want confirm this action?");

builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {
        // Do do my action here

        dialog.dismiss();
    }

});

builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        // I do not need any action here you might
        dialog.dismiss();
    }
});

AlertDialog alert = builder.create();
alert.show();

বেনামে কমান্ডের চেন হিসাবে এবং অন্য বস্তুর সংজ্ঞায়িত না করে ডায়ালগটি দেখান:

 new AlertDialog.Builder(this).setTitle("Confirm Delete?")
                        .setMessage("Are you sure?")
                        .setPositiveButton("YES",
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int which) {

                                       // Perform Action & Dismiss dialog                                 
                                        dialog.dismiss();
                                    }
                                })
                        .setNegativeButton("NO", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // Do nothing
                                dialog.dismiss();
                            }
                        })
                        .create()
                        .show();

স্টিভ এইচ এর উত্তর স্পট হয়, তবে এখানে আরও কিছু তথ্য রয়েছে: ডায়ালগগুলি যেভাবে কাজ করে সেটি কারন কারণ Android এ ডায়ালগগুলি অ্যাসিঙ্ক্রোনাস হয় (ডায়ালগটি প্রদর্শিত হলে মৃত্যুদন্ড বন্ধ হয় না)। এই কারণে, ব্যবহারকারীর নির্বাচন পরিচালনা করার জন্য আপনাকে একটি কলব্যাক ব্যবহার করতে হবে।

অ্যানড্রয়েড এবং। নেট (যেমন ডায়ালগ সম্পর্কিত) হিসাবে পার্থক্যগুলির মধ্যে দীর্ঘ আলোচনার জন্য এই প্রশ্নটি দেখুন। ডায়ালগ / সতর্কতা ডায়ালগস: ডায়ালগ আপ করার সময় কীভাবে "মৃত্যুদন্ড কার্যকর করতে হবে" (.NET-style)





alertdialog