Android - กล่องโต้ตอบการแจ้งเตือน
Dialog เป็นหน้าต่างเล็ก ๆ ที่แจ้งให้ผู้ใช้ตัดสินใจหรือป้อนข้อมูลเพิ่มเติม
บางครั้งในแอปพลิเคชันของคุณหากคุณต้องการถามผู้ใช้เกี่ยวกับการตัดสินใจระหว่างใช่หรือไม่ใช่เพื่อตอบสนองต่อการกระทำใด ๆ ของผู้ใช้โดยยังคงอยู่ในกิจกรรมเดิมและไม่ต้องเปลี่ยนหน้าจอคุณสามารถใช้กล่องโต้ตอบการแจ้งเตือนได้
ในการสร้างกล่องโต้ตอบการแจ้งเตือนคุณต้องสร้างวัตถุของ AlertDialogBuilder ซึ่งเป็นคลาสภายในของ AlertDialog ไวยากรณ์ได้รับด้านล่าง
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
ตอนนี้คุณต้องตั้งค่าปุ่มบวก (ใช่) หรือลบ (ไม่ใช่) โดยใช้วัตถุของคลาส AlertDialogBuilder ไวยากรณ์ของมันคือ
alertDialogBuilder.setPositiveButton(CharSequence text,
DialogInterface.OnClickListener listener)
alertDialogBuilder.setNegativeButton(CharSequence text,
DialogInterface.OnClickListener listener)
นอกเหนือจากนี้คุณสามารถใช้ฟังก์ชันอื่น ๆ ที่มีให้โดยคลาส builder เพื่อปรับแต่งไดอะล็อกการแจ้งเตือน ดังต่อไปนี้
ซีเนียร์ No | ประเภทวิธีการและคำอธิบาย |
---|---|
1 |
setIcon(Drawable icon) วิธีนี้ตั้งค่าไอคอนของกล่องโต้ตอบการแจ้งเตือน |
2 |
setCancelable(boolean cancel able) วิธีนี้ตั้งค่าคุณสมบัติว่าสามารถยกเลิกไดอะล็อกได้หรือไม่ |
3 |
setMessage(CharSequence message) วิธีนี้ตั้งค่าข้อความที่จะแสดงในกล่องโต้ตอบการแจ้งเตือน |
4 |
setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) วิธีนี้ตั้งค่ารายการที่จะแสดงในกล่องโต้ตอบเป็นเนื้อหา ตัวเลือกที่เลือกจะถูกแจ้งโดยผู้ฟัง |
5 |
setOnCancelListener(DialogInterface.OnCancelListener onCancelListener) วิธีนี้ตั้งค่าการโทรกลับที่จะถูกเรียกหากกล่องโต้ตอบถูกยกเลิก |
6 |
setTitle(CharSequence title) วิธีนี้ตั้งชื่อเรื่องให้ปรากฏในกล่องโต้ตอบ |
หลังจากสร้างและตั้งค่าตัวสร้างไดอะล็อกคุณจะสร้างไดอะล็อกแจ้งเตือนโดยเรียกเมธอด create () ของคลาส builder ไวยากรณ์ของมันคือ
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
สิ่งนี้จะสร้างกล่องโต้ตอบการแจ้งเตือนและจะแสดงบนหน้าจอ
ส่วนของกล่องโต้ตอบ
ก่อนที่จะเข้าสู่ตัวอย่างเราจำเป็นต้องทราบถึงส่วนของไดอะล็อกส่วนไดอะล็อกคือแฟรกเมนต์ที่สามารถแสดงแฟรกเมนต์ในไดอะล็อกบ็อกซ์
public class DialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
toast.makeText(this,"enter a text here",Toast.LENTH_SHORT).show();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
});
// Create the AlertDialog object and return it
return builder.create();
}
}
}
กล่องโต้ตอบรายการ
ใช้เพื่อแสดงรายการของรายการในกล่องโต้ตอบสมมติว่าผู้ใช้ต้องเลือกรายการหรือมิฉะนั้นต้องคลิกรายการจากหลายรายการในสถานการณ์นี้เราสามารถใช้กล่องโต้ตอบรายการ
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(Pick a Color)
.setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
}
});
return builder.create();
}
กล่องโต้ตอบรายการตัวเลือกเดียว
ใช้เพื่อเพิ่มรายการตัวเลือกเดียวในกล่องโต้ตอบเราสามารถเลือกหรือยกเลิกการเลือกได้ตามตัวเลือกของผู้ใช้
public Dialog onCreateDialog(Bundle savedInstanceState) {
mSelectedItems = new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("This is list choice dialog box");
.setMultiChoiceItems(R.array.toppings, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
}
else if (mSelectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
// Set the action buttons
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// User clicked OK, so save the mSelectedItems results somewhere
// or return them to the component that opened the dialog
...
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
...
}
});
return builder.create();
}
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ AlertDialog ใน Android
ในการทดลองกับตัวอย่างนี้คุณต้องเรียกใช้สิ่งนี้บนโปรแกรมจำลองหรืออุปกรณ์จริง
ขั้นตอน | คำอธิบาย |
---|---|
1 | คุณจะใช้ Android studio สร้างแอปพลิเคชัน Android และตั้งชื่อเป็น My Application ภายใต้แพ็คเกจ com.example.sairamkrishna.myapplication |
2 | แก้ไขไฟล์ src / MainActivity.java เพื่อเพิ่มรหัสโต้ตอบการแจ้งเตือนเพื่อเปิดกล่องโต้ตอบ |
3 | แก้ไขไฟล์ XML เค้าโครง res / layout / activity_main.xml เพิ่มคอมโพเนนต์ GUI หากจำเป็น |
4 | ไม่จำเป็นต้องเปลี่ยนค่าคงที่สตริงเริ่มต้น Android studio ดูแลสตริงเริ่มต้นที่ values / string.xml |
5 | เรียกใช้แอปพลิเคชันและเลือกอุปกรณ์ Android ที่ใช้งานอยู่และติดตั้งแอปพลิเคชันบนแอปพลิเคชันและตรวจสอบผลลัพธ์ |
นี่คือรหัสที่แก้ไขของ src/MainActivity.java
package com.example.sairamkrishna.myapplication;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void open(View view){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Are you sure,
You wanted to make decision");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this,"You clicked yes
button",Toast.LENGTH_LONG).show();
}
});
alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
นี่คือรหัสที่แก้ไขของ res/layout/activity_main.xml
ในโค้ดด้านล่าง abc ระบุโลโก้ของ tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert Dialog"
android:id="@+id/textView"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorialspoint"
android:id="@+id/textView2"
android:textColor="#ff3eff0f"
android:textSize="35dp"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert dialog"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="42dp"
android:onClick="open"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
</RelativeLayout>
นี่คือของStrings.xml
<resources>
<string name="app_name">My Application</string>
</resources>
นี่คือรหัสเริ่มต้นของ AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
มาลองเรียกใช้แอปพลิเคชันของคุณ ฉันถือว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการเรียกใช้แอปจาก Android studio ให้เปิดไฟล์กิจกรรมของโครงการแล้วคลิก
เลือกตัวเลือกของคุณแล้วคลิกที่ตัวเลือกนั้น สมมติว่าหากคุณคลิกที่ปุ่มใช่ผลลัพธ์จะเป็นดังนี้
หากคุณคลิกที่ไม่มีปุ่มมันจะเรียกว่าเสร็จสิ้น () และจะปิดแอปพลิเคชันของคุณ