จะแสดงกล่องโต้ตอบใช่ / ไม่ใช่บน Android ได้อย่างไร?


358

ใช่ฉันรู้ว่ามี AlertDialog.Builder แต่ฉันตกใจเมื่อรู้ว่ายาก (ดีอย่างน้อยไม่เหมาะกับโปรแกรมเมอร์) เพื่อแสดงกล่องโต้ตอบใน Android

ฉันเคยเป็นนักพัฒนา. NET และฉันสงสัยว่ามีสิ่งใดเทียบเท่ากับ Android ต่อไปนี้หรือไม่

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


3
ฉันจะรีเซ็ตรหัส AlertDialog และจัดการเหตุการณ์ (ใช่ไม่มีการกระทำ) ในทุกหน้าจอได้อย่างไร ใน. Net เราใช้คลาส Action เพื่อจัดการกับเหตุการณ์มีวิธีใดบ้างที่จะใช้สิ่งนี้? ฉันรู้ว่าใช้อินเทอร์เฟซที่เราสามารถทำได้ แต่วิธีอื่นใด?
Ravikumar11

2
ใช่ .... พวกเรา. ผู้พัฒนา. NET มีช่วงเวลาที่ยากลำบากกับ android .... ฉันสงสัยว่า Xamarin เป็นเครื่องมือที่ยอดเยี่ยมหรือไม่?
Daniel Möller

คำตอบ:


745

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()หรือคุณสามารถใช้


3
ใหม่ AlertDialog.Builder (นี่); ข้อผิดพลาดเวลาในการคอมไพล์: 'คอนสตรัคเตอร์ AlertDialog.Builder (ใหม่ View.OnClickListener () {}) ไม่ได้ถูกกำหนด'
Eric Leschinski

3
ง่ายและมีประโยชน์ btw โต้ตอบจะยกเลิกตัวเองหลังจากผู้ใช้คลิกปุ่ม "ใช่" หรือ "ไม่" ไม่มีอะไรที่คุณต้องทำ
RRTW

9
ฉันเองฉันใช้ไปหลายครั้งแล้ว แต่ฉันพบว่ามันง่ายกว่าและเร็วกว่าที่จะมองหา SO ตัวอย่างโค้ดที่ให้ไว้ที่นี่นั้นง่ายมาก ... ฉันหวังว่าเอกสาร Android จะมีลักษณะเช่นนี้
Radu

4
@EricLeschinski อาจเป็น "นี่" ไม่ใช่บริบทลองใช้สิ่งนี้: AlertDialog.Builder builder = new AlertDialog.Builder(getView().getContext());
cldrr

1
@davidglorioso ลำดับของใช่ / ไม่ใช่หรือไม่ใช่ / ใช่ขึ้นอยู่กับรุ่นของ Android และคุณไม่สามารถควบคุมได้ ฉันจำไม่ได้เมื่อมันเปลี่ยน แต่ฉันคิดว่ามันเป็น 4.x หรือ 5 โดยบอกว่าคุณไม่ควรเปลี่ยนมัน แอพทั้งหมดที่ใช้กล่องโต้ตอบการแจ้งเตือนมาตรฐานจะใช้ลำดับปุ่มใช่ / ไม่เหมือนกันและมันจะสร้างความสับสนสำหรับผู้ใช้หากคุณแตกต่างกัน หากคุณต้องการให้มันแตกต่างอย่างแท้จริงคุณจะต้องตั้งค่าปุ่มบวก / ลบของคุณด้วยตนเองขึ้นอยู่กับรุ่น Android
Steve Haley

163

ลองสิ่งนี้:

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();

25
โดยส่วนตัวแล้วฉันชอบข้อมูลโค้ดมากกว่าคำตอบที่ยอมรับ
John

1
@nikki เหตุใดทั้งสองจึงยกเลิก ()
likejudo

The constructor AlertDialog.Builder(MainActivity.DrawerItemClickListener) is undefined
แฮช

@likejiujitsu นั่นเป็นเพราะคุณต้องการที่จะทำความสะอาดกล่องโต้ตอบจากหน่วยความจำในกรณีใด ๆ หลังจากที่คุณทำงานของคุณ
Avi Levin

32

คำตอบของ Steve H เป็นจุด แต่นี่เป็นข้อมูลเพิ่มเติมเล็กน้อย: เหตุผลที่กล่องโต้ตอบทำงานในแบบที่พวกเขาทำเพราะกล่องโต้ตอบใน Android นั้นไม่ตรงกัน (การดำเนินการไม่หยุดเมื่อมีการแสดงกล่องโต้ตอบ) ด้วยเหตุนี้คุณต้องใช้โทรกลับเพื่อจัดการการเลือกของผู้ใช้

ลองอ่านคำถามนี้สำหรับการสนทนาที่ยาวนานขึ้นระหว่างความแตกต่างใน Android และ. NET (เนื่องจากเกี่ยวข้องกับไดอะล็อก): Dialogs / AlertDialogs: วิธี "บล็อกการกระทำ" ในขณะที่บทสนทนาสิ้นสุดขึ้น (สไตล์ NET)


8
ขอบคุณความจริงที่ว่ากล่องโต้ตอบ Android เป็นแบบอะซิงโครนัสทำให้ทุกอย่างชัดเจน (และสมเหตุสมผล) ในตอนนี้ ดูเหมือนว่าฉันจะต้อง "คิดนอกสุทธิ" เมื่อมีการพัฒนาแอพพลิเคสำหรับ Android :)
เดี่ยว

FYI: สิ่งที่คุณเรียกว่า "กล่องโต้ตอบแบบอะซิงโครนัส" เรียกว่า "กล่องโต้ตอบแบบไม่โต้ตอบ" ในคำศัพท์ GUI ในขณะที่ "กล่องโต้ตอบแบบซิงโครนัส" เรียกว่า "กล่องโต้ตอบแบบโมดัล" Android ไม่มีคุณสมบัติกล่องโต้ตอบ modal (ยกเว้นในกรณีที่พิเศษมาก)
อเล็กซ์

Android ไม่อนุญาตกล่องโต้ตอบโมดัลของระบบด้วยเหตุผลที่ดีมาก: ไม่ได้รับอนุญาตให้รบกวนแอปอื่นในอุปกรณ์
Renascienza

14

นี่ใช้งานได้สำหรับฉัน:

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

    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();

7

ถามคนว่าเขาต้องการโทรหรือไม่โต้ตอบ

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class Firstclass extends Activity {

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

        ImageView imageViewCall = (ImageView) findViewById(R.id.ring_mig);

        imageViewCall.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v){
                try{
                    showDialog("0728570527");
                } catch (Exception e){
                    e.printStackTrace();
                }                   
            }    
        });    
    }

    public void showDialog(final String phone) throws Exception {
        AlertDialog.Builder builder = new AlertDialog.Builder(Firstclass.this);

        builder.setMessage("Ring: " + phone);       

        builder.setPositiveButton("Ring", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which){

                Intent callIntent = new Intent(Intent.ACTION_DIAL);// (Intent.ACTION_CALL);                 
                callIntent.setData(Uri.parse("tel:" + phone));
                startActivity(callIntent);

                dialog.dismiss();
            }
        });

        builder.setNegativeButton("Abort", new DialogInterface.OnClickListener(){   
            @Override
            public void onClick(DialogInterface dialog, int which){
                dialog.dismiss();
            }
        });         
        builder.show();
    }    
}

5

คำตอบของ Steves นั้นถูกต้องแม้ว่าจะล้าสมัยไปแล้ว นี่คือตัวอย่างของ FragmentDialog

ห้องเรียน:

public class SomeDialog extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity())
            .setTitle("Title")
            .setMessage("Sure you wanna do this!")
            .setNegativeButton(android.R.string.no, new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // do nothing (will close dialog)
                }
            })
            .setPositiveButton(android.R.string.yes,  new OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // do something
                }
            })
            .create();
    }
}

ในการเริ่มต้นกล่องโต้ตอบ:

            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            // Create and show the dialog.
            SomeDialog newFragment = new SomeDialog ();
            newFragment.show(ft, "dialog");

คุณสามารถให้ชั้นเรียนใช้onClickListenerและใช้สิ่งนั้นแทนฟังแบบฝัง


@likejiujitsu ด้านบนก็เพียงพอแล้ว
Warpzit

สร้างคลาส FragmentDialog เพียงเพื่อทำกล่องไม่ใช่ / ใช่เป็นการออกแบบนิดหน่อย ... :) ค่าเริ่มต้น AlertDialog นั้นยุติธรรมพอ
Renascienza

@Renascienza ใช่ แต่ฉันเชื่อว่ามันล้าสมัย
Warpzit

ไม่ได้จริงๆ FragmentDialog ถูกเพิ่มเข้ามาเป็นสิ่งที่มีประโยชน์เพื่อให้คุณสามารถนำชิ้นส่วนในกล่องโต้ตอบ แฟรกเมนต์เป็นข้อมูลเกี่ยวกับการใช้ซ้ำ UI เนื่องจากคุณไม่ต้องการใช้แฟรกเมนต์เพียงเพราะเป็นสิ่งใหม่ (แฟรกเมนต์ที่ไม่ได้มาแทนที่กิจกรรม) คุณไม่จำเป็นต้องใช้ FragmentDialog ในกรณีที่ไม่ได้รับประโยชน์ ตัวอย่างการแจ้งเตือนใช่ / ไม่ง่าย
Renascienza

2
คำแนะนำของฉันคือ: ถ้าคุณต้องการนำกลับมาใช้ใหม่ไม่เพียง แต่เลย์เอาต์ แต่เป็นพื้นหลังและรหัสวงจรชีวิตใช้กล่องโต้ตอบส่วน ด้วยส่วนที่คุณมีการควบคุมวงจรชีวิตของกิจกรรมที่เกี่ยวข้องและสามารถตอบสนองต่อกิจกรรมเช่นสร้าง (เป็น UI จะถูกสร้างขึ้นใหม่เมื่อผู้ใช้หมุนอุปกรณ์ของเขา), หยุดชั่วคราว, ดำเนินการต่อ ฯลฯ ในบทสรุปโต้ตอบกับ UI บางส่วนที่ซับซ้อน หากคุณไม่ต้องการสิ่งนี้และบทสนทนาของคุณค่อนข้างง่าย
Renascienza

5

ขอบคุณนิกกี้คำตอบของคุณช่วยให้ฉันปรับปรุงสิ่งที่มีอยู่ได้ง่ายๆโดยการเพิ่มแอ็คชั่นที่ฉันต้องการดังนี้

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();

ฉันรู้สึกว่า OP ไม่ต้องการใช้ AlertDialog.Builder OP รู้ว่ามีวิธียูทิลิตี้ลัดหรือไม่
walrii

1
ฉันได้เขียนรหัสเดียวกัน แต่ไม่ปรากฏขึ้นก่อนแล้วใช่โดยทั่วไปมันเป็นกล่องโต้ตอบ NO / YES แต่ฉันต้องการกล่องโต้ตอบ YES / NO ฉันจะทำอย่างไร
Sagar Devanga

สำหรับ YES / NO เทียบกับ NO / YES ดูคำตอบนี้: stackoverflow.com/a/13644589/1815624คุณสามารถจัดการได้ตามคำแนะนำนี้: stackoverflow.com/a/13644536/1815624
CrandellWS

4

ใน Kotlin:

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()

3

แสดงข้อความโต้ตอบโดยไม่ระบุชื่อเป็นคำสั่ง & โดยไม่ต้องกำหนดวัตถุอื่น:

 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();

2

คำตอบทั้งหมดที่นี่ต้มลงไปเป็นรหัสยาวและไม่เป็นมิตรกับผู้อ่าน: สิ่งที่คนถามกำลังพยายามหลีกเลี่ยง สำหรับฉันแล้ววิธีที่ง่ายที่สุดคือจ้างลูกแกะที่นี่:

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();

Lambdas ใน Android ต้องการปลั๊กอิน retrolambda ( https://github.com/evant/gradle-retrolambda ) แต่มันมีประโยชน์อย่างมากในการเขียนโค้ดทำความสะอาด



1

1. สร้าง AlertDialog ตั้งค่าข้อความชื่อเรื่องและบวกปุ่มลบ:

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:

alertDialog.show();

หมายเหตุ: อย่าลืมคำหลักสุดท้ายด้วย AlertDialog


0
AlertDialog.Builder altBx = new AlertDialog.Builder(this);
    altBx.setTitle("My dialog box");
    altBx.setMessage("Welcome, Please Enter your name");
    altBx.setIcon(R.drawable.logo);

    altBx.setPositiveButton("Ok", new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int which)
      {
          if(edt.getText().toString().length()!=0)
          {
              // Show any message
          }
          else 
          {

          }
      }
    });
    altBx.setNeutralButton("Cancel", new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int which)
      {
          //show any message
      }

    });
  altBx.show();  

0

คุณสามารถใช้โซลูชันทั่วไปสำหรับการตัดสินใจและใช้ในกรณีอื่นไม่ใช่สำหรับใช่ / ไม่ใช่และปรับแต่งการแจ้งเตือนด้วยภาพเคลื่อนไหวหรือเค้าโครง:

บางสิ่งเช่นนี้ สร้างชั้นเรียนของคุณสำหรับการถ่ายโอนข้อมูล:

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 ...
            }
        };
    }
} 


0

สำหรับKotlinใน Android ::

    override fun onBackPressed() {
        confirmToCancel()
    }

    private fun confirmToCancel() {
        AlertDialog.Builder(this)
            .setTitle("Title")
            .setMessage("Do you want to cancel?")
            .setCancelable(false)
            .setPositiveButton("Yes") {
                dialog: DialogInterface, _: Int ->
                dialog.dismiss()
                // for sending data to previous activity use
                // setResult(response code, data)
                finish()
            }
            .setNegativeButton("No") {
                dialog: DialogInterface, _: Int ->
                dialog.dismiss()
            }
            .show()
    } 

0

การใช้ Kotlin

คุณสามารถสร้างฟังก์ชั่นง่าย ๆ เช่นนี้:

fun dialogYesOrNo(
        activity: Activity,
        title: String,
        message: String,
        listener: DialogInterface.OnClickListener
    ) {
        val builder = AlertDialog.Builder(activity)
        builder.setPositiveButton("Yes", DialogInterface.OnClickListener { dialog, id ->
            dialog.dismiss()
            listener.onClick(dialog, id)
        })
        builder.setNegativeButton("No", null)
        val alert = builder.create()
        alert.setTitle(title)
        alert.setMessage(message)
        alert.show()
    }

และเรียกมันว่าสิ่งนี้:

dialogYesOrNo(
  this,
  "Question",
  "Would you like to eat?",
  DialogInterface.OnClickListener { dialog, id ->
    // do whatever you need to do when user presses "Yes"
  }
})
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.