คำถามติดแท็ก android-dialogfragment

DialogFragment คือส่วนที่แสดงหน้าต่างโต้ตอบซึ่งลอยอยู่ด้านบนของหน้าต่างกิจกรรม

17
วิธีป้องกันการปิดกล่องโต้ตอบเมื่อคลิกปุ่ม
ฉันมีกล่องโต้ตอบEditTextสำหรับการป้อนข้อมูล เมื่อฉันคลิกปุ่ม "ใช่" บนกล่องโต้ตอบมันจะตรวจสอบอินพุตและปิดกล่องโต้ตอบ อย่างไรก็ตามหากอินพุตผิดฉันต้องการคงอยู่ในกล่องโต้ตอบเดียวกัน ทุกครั้งไม่ว่าอินพุตจะเป็นอย่างไรกล่องโต้ตอบควรปิดโดยอัตโนมัติเมื่อฉันคลิกที่ปุ่ม "ไม่" ฉันจะปิดการใช้งานนี้ได้อย่างไร โดยวิธีการที่ฉันได้ใช้ PositiveButton และ NegativeButton สำหรับปุ่มในการโต้ตอบ

6
วิธีสร้าง DialogFragment ที่ไม่มีชื่อ
ฉันกำลังสร้าง DialogFragment เพื่อแสดงข้อความช่วยเหลือเกี่ยวกับแอพของฉัน ทุกอย่างทำงานได้ดีนอกเหนือจากสิ่งหนึ่ง: มีแถบสีดำที่ด้านบนของหน้าต่างที่แสดง DialogFragment ซึ่งฉันเข้าใจว่าสงวนไว้สำหรับชื่อเรื่องซึ่งเป็นสิ่งที่ฉันไม่ต้องการใช้ นี่เป็นเรื่องที่เจ็บปวดเป็นพิเศษเนื่องจาก DialogFragment ที่กำหนดเองของฉันใช้พื้นหลังสีขาวดังนั้นการเปลี่ยนแปลงจึงเป็นสิ่งที่ไม่ควรพลาด ให้ฉันแสดงสิ่งนี้ในลักษณะกราฟิกเพิ่มเติม: ตอนนี้รหัส XML สำหรับ DialogFragment ของฉันเป็นดังนี้: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:id="@+id/holding" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/dialog_fragment_bg" > <!-- Usamos un LinearLayout para que la imagen y el texto esten bien alineados --> <LinearLayout android:id="@+id/confirmationToast" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/confirmationToastText" …

21
จะสร้างกล่องโต้ตอบแบบกำหนดเองใน Android ได้อย่างไร?
ฉันต้องการสร้างกล่องโต้ตอบแบบกำหนดเองตามด้านล่าง ฉันได้ลองสิ่งต่อไปนี้แล้ว ฉันสร้างคลาสย่อยของAlertDialog.Builderและใช้หัวเรื่องที่กำหนดเองและมุมมองเนื้อหาที่กำหนดเองและใช้สิ่งนั้น แต่ผลลัพธ์ไม่เป็นไปตามที่คาดไว้ ความพยายามอีกประการหนึ่งคือ subclass DialogFragmentและกำหนดไดอะล็อกภายใน onCreateDialog แต่ผลลัพธ์ไม่เป็นไปตามที่คาดไว้ จากนั้นฉันลองใช้คลาสไดอะล็อกธรรมดา ผลลัพธ์ไม่เป็นไปตามที่คาดไว้ ในทั้งสามกรณีปัญหาคือเมื่อฉันมองข้ามมุมมองหัวเรื่องขนาดของกล่องโต้ตอบไม่เป็นไปตามที่คาดไว้และเมื่อฉันใช้มุมมองชื่อผลลัพธ์จะมีเส้นขอบหนารอบมุมมองเนื้อหา (ซึ่งดูไม่ดี) ตอนนี้ฉันมีสองคำถามในใจของฉัน ... ฉันจะบรรลุสิ่งนั้นได้อย่างไร เมื่อฉันลองหลายสิ่งไปแล้วคำตอบโดยตรงจะได้รับการชื่นชมมากขึ้น วิธีที่ดีที่สุดในการแสดงข้อผิดพลาดหรือข้อความแจ้งเตือนในแอพ android คืออะไร? EDIT Android Developer Documentationแนะนำว่าเราควรใช้ DialogFragments หรือ Dialogs เพื่อแสดงข้อความ Error / Alert ให้กับผู้ใช้ อย่างไรก็ตามมีอยู่ช่วงหนึ่งที่พวกเขาพูด ... เคล็ดลับ: ถ้าคุณต้องการไดอะล็อกที่กำหนดเองคุณสามารถแสดงกิจกรรมเป็นไดอะล็อกแทนการใช้ไดอะล็อก API เพียงสร้างกิจกรรมและกำหนดธีมเป็น Theme.Holo.Dialog ในองค์ประกอบรายการ ความหมายของสิ่งนั้นคืออะไร? การใช้กิจกรรมเพียงเพื่อแสดงข้อความแสดงข้อผิดพลาดมันมากเกินไปหรือไม่?

7
Android DialogFragment เทียบกับ Dialog
Google ขอแนะนำให้เราใช้DialogFragmentแทนการที่เรียบง่ายDialogโดยใช้Fragments APIแต่มันเป็นเรื่องเหลวไหลที่จะใช้แยกDialogFragmentหาง่ายใช่ไม่มีกล่องข้อความยืนยัน แนวปฏิบัติที่ดีที่สุดในกรณีนี้คืออะไร?

26
วิธีการตั้งค่าความกว้างและความสูงของ DialogFragment
ฉันระบุรูปแบบของ DialogFragment ของฉันในไฟล์รูปแบบ XML (ขอเรียกว่าlayout_mydialogfragment.xml) และlayout_widthและlayout_heightคุณลักษณะเฉพาะอย่างยิ่ง (จะ100dpแต่ละสมมติ) ฉันขยายรูปแบบนี้ในonCreateView(...)วิธีการDialogFragment ของฉันดังนี้ View view = inflater.inflate(R.layout.layout_mydialogfragment, container, false); น่าเสียดายที่ฉันพบว่าเมื่อไดอะล็อกของฉัน (DialogFragment) ปรากฏขึ้นจะไม่เคารพlayout_widthและlayout_heightระบุในไฟล์เลย์เอาต์ xml (และไดอะล็อกของฉันจะย่อเล็กลงหรือขยายได้ขึ้นอยู่กับเนื้อหา) ใครรู้หรือไม่ว่าฉันจะได้รับกล่องโต้ตอบของฉันที่จะเคารพlayout_widthและlayout_heightระบุไว้ในไฟล์รูปแบบของ XML? ในขณะนี้ฉันต้องระบุความกว้างและความสูงของกล่องโต้ตอบอีกครั้งในonResume()วิธีการDialogFragment ของฉันดังนี้ ... getDialog().getWindow().setLayout(width, height); ... และด้วยเหตุนี้เราจึงจำไม่ได้ว่าต้องเปลี่ยนแปลงความกว้างและความสูงของกล่องโต้ตอบในอนาคตทั้งสองแห่ง

27
DialogFragment เต็มหน้าจอใน Android
ฉันพยายามแสดง DialogFragment แบบเกือบเต็มจอ แต่ฉันก็ไม่สามารถทำได้ วิธีที่ฉันแสดง Fragment นั้นตรงจากเอกสารของนักพัฒนา Android FragmentManager f = ((Activity)getContext()).getFragmentManager(); FragmentTransaction ft = f.beginTransaction(); Fragment prev = f.findFragmentByTag("dialog"); if (prev != null) { ft.remove(prev); } ft.addToBackStack(null); // Create and show the dialog. DialogFragment newFragment = new DetailsDialogFragment(); newFragment.show(ft, "dialog"); ฉันรู้ว่าจะพยายามตั้งค่า RelativeLayout อย่างไร้เดียงสาเป็นส่วนย่อยเพื่อเติม _parent และบาง minWidth และ minHeight <RelativeLayout …

5
วิธีการตั้งชื่อของ DialogFragment?
นี้ควรจะเป็นงานที่ง่าย แต่ด้วยเหตุผลบางอย่างที่ฉันสามารถหาวิธีการตั้งชื่อของที่DialogFragment (ฉันกำลังตั้งค่าเนื้อหาโต้ตอบโดยใช้onCreateViewเกินพิกัด) สไตล์เริ่มต้นออกจากตำแหน่งสำหรับชื่อเรื่อง แต่ฉันไม่พบวิธีการใด ๆ ในDialogFragmentชั้นเรียนเพื่อตั้งค่า มีการตั้งชื่ออย่างน่าอัศจรรย์เมื่อใช้onCreateDialogวิธีการตั้งเนื้อหาดังนั้นฉันสงสัยว่านี่คือโดยการออกแบบหรือมีเคล็ดลับพิเศษเพื่อตั้งเมื่อใช้onCreateViewเกินพิกัด

13
โทรกลับไปยังส่วนจาก DialogFragment
คำถาม: จะสร้างการติดต่อกลับจาก DialogFragment ไปยัง Fragment อื่นได้อย่างไร ในกรณีของฉันกิจกรรมที่เกี่ยวข้องควรไม่ทราบถึง DialogFragment อย่างสมบูรณ์ พิจารณาฉันมี public class MyFragment extends Fragment implements OnClickListener เมื่อถึงจุดหนึ่งฉันก็ทำได้ DialogFragment dialogFrag = MyDialogFragment.newInstance(this); dialogFrag.show(getFragmentManager, null); ที่ MyDialogFragment ดูเหมือนว่า protected OnClickListener listener; public static DialogFragment newInstance(OnClickListener listener) { DialogFragment fragment = new DialogFragment(); fragment.listener = listener; return fragment; } แต่ไม่มีการรับประกันว่าผู้ฟังจะอยู่รอบ ๆ ถ้า …

11
จะปิด DialogFragment ได้อย่างไร?
เอกสารพูดสิ่งนี้สำหรับdismiss()วิธีการจากDialogคลาส: ปิดกล่องโต้ตอบนี้และลบออกจากหน้าจอ วิธีนี้สามารถเรียกใช้ได้อย่างปลอดภัยจากเธรดใด ๆ โปรดทราบว่าคุณไม่ควรแทนที่เมธอดนี้เพื่อทำการล้างข้อมูลเมื่อกล่องโต้ตอบถูกปิดใช้แทนใช้ในonStop(). ในรหัสของฉันสิ่งที่ฉันทำคือเรียกร้องgetDialog().dismiss()ให้ปิด onStop()แต่ผมไม่ได้ทำอะไรอย่างอื่นหรือแม้กระทั่งการใช้ ดังนั้นฉันจึงถามว่าจะยกเลิก a อย่างไรให้ถูกต้องDialogFragmentเพื่อหลีกเลี่ยงการรั่วไหลของหน่วยความจำ ฯลฯ

7
แสดงกล่องโต้ตอบจากส่วนย่อยหรือไม่
ฉันมีชิ้นส่วนบางอย่างที่ต้องแสดงกล่องโต้ตอบปกติ ในกล่องโต้ตอบเหล่านี้ผู้ใช้สามารถเลือกคำตอบใช่ / ไม่ใช่จากนั้นส่วนควรทำงานตามนั้น ตอนนี้Fragmentชั้นไม่ได้มีวิธีการที่จะแทนที่ดังนั้นผมคิดว่าผมต้องใช้ไดอะล็อกนอกในที่มีonCreateDialog() Activityไม่เป็นไร แต่Activityจำเป็นต้องรายงานกลับคำตอบที่เลือกไปยังส่วนย่อย แน่นอนว่าฉันสามารถใช้รูปแบบการโทรกลับได้ที่นี่ดังนั้นแฟรกเมนต์จึงลงทะเบียนตัวเองที่Activityคลาสของผู้ฟังและกิจกรรมจะรายงานคำตอบกลับผ่านสิ่งนั้นหรืออะไรทำนองนั้น แต่ดูเหมือนว่าจะค่อนข้างยุ่งยากสำหรับงานง่ายๆเนื่องจากการแสดงกล่องโต้ตอบใช่ไม่ใช่ "แบบธรรมดา" ในส่วนย่อย ด้วยวิธีนี้ฉันFragmentจะมีความเป็นตัวเองน้อยลง มีวิธีที่สะอาดกว่านี้ไหม แก้ไข: คำตอบสำหรับคำถามนี้ไม่ได้อธิบายรายละเอียดว่าควรใช้ DialogFragments เพื่อแสดงกล่องโต้ตอบจาก Fragments อย่างไร AFAIK วิธีที่จะไปคือ: แสดงส่วนย่อย เมื่อจำเป็นให้สร้าง DialogFragment ตั้งค่า Fragment ดั้งเดิมเป็นเป้าหมายของ DialogFragment นี้ด้วย .setTargetFragment() . แสดง DialogFragment ด้วย. show () จาก Fragment ดั้งเดิม เมื่อผู้ใช้เลือกตัวเลือกบางอย่างใน DialogFragment นี้ให้แจ้ง Fragment ดั้งเดิมเกี่ยวกับการเลือกนี้ (เช่นผู้ใช้คลิก 'ใช่') คุณจะได้รับการอ้างอิงของ Fragment ดั้งเดิมด้วย .getTarget …

6
ส่งผ่านอาร์กิวเมนต์ไปยัง DialogFragment
ฉันต้องการส่งผ่านตัวแปรบางตัวไปDialogFragmentจึงจะสามารถดำเนินการได้ Eclipse แนะนำว่าฉันควรใช้ Fragment#setArguments(Bundle) แต่ฉันไม่รู้วิธีใช้ฟังก์ชันนี้ ฉันจะใช้มันเพื่อส่งผ่านตัวแปรไปยังไดอะล็อกของฉันได้อย่างไร

4
DialogFragment set คุณสมบัติที่ยกเลิกได้ไม่ทำงาน
ฉันกำลังทำงานในแอปพลิเคชัน Android และกำลังใช้ DialogFragment เพื่อแสดงกล่องโต้ตอบและฉันต้องการทำให้ DialogFragment นั้นไม่สามารถยกเลิกได้ ฉันได้ทำให้คุณสมบัติที่ยกเลิกการโต้ตอบเป็นเท็จ แต่ก็ยังไม่ส่งผลกระทบ โปรดตรวจสอบรหัสของฉันและแนะนำวิธีแก้ปัญหาให้ฉัน public class DialogTest extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return super.onCreateDialog(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dialog_test, container, true); getDialog().requestWindowFeature(STYLE_NO_TITLE); getDialog().setCancelable(false); return view; } }

16
จะเปลี่ยนสีพื้นหลังของสแน็คบาร์ได้อย่างไร?
ฉันกำลังแสดงสแน็คบาร์ใน DialogFragment ภายในคลิกบวกของ alertDialog นี่คือข้อมูลโค้ดของฉัน Snackbar snackbar = Snackbar.make(view, "Please enter customer name", Snackbar.LENGTH_LONG) .setAction("Action", null); View sbView = snackbar.getView(); sbView.setBackgroundColor(Color.BLACK); snackbar.show(); ฉันกำลังส่งมุมมองของไดอะล็อกแฟรกเมนต์ไปที่สแน็คบาร์ ฉันต้องการพื้นหลังสีดำ? ฉันจะทำเช่นนี้ได้อย่างไร? ฉันกำลังส่งคืน alertDialog ใน DialogFragment และธีมที่ฉันตั้งค่าเป็นไดอะล็อกดังต่อไปนี้ <style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> <!-- Used for the buttons --> <item name="colorAccent">@color/accent</item> <!-- Used for the title and text --> <item …

10
ไม่สามารถทำให้ DialogFragment แบบกำหนดเองโปร่งใสเหนือ Fragment ได้
ฉันต้องการสร้างไดอะล็อกบนส่วนย่อย (ที่ใช้ทั้งหน้าจอ) กล่องโต้ตอบจะต้องเป็นกล่องโต้ตอบแบบลอยที่จะวางตำแหน่งเหนือส่วนโดยที่ส่วนที่มืดออกมานอกส่วนนั้น .. สำหรับ Dialog ที่กำหนดเองฉันมี LinearLayout ที่มีขอบโค้งไม่ว่าฉันจะทำอะไรกล่องโต้ตอบจะมีขอบสีดำทุกด้าน (เล็กมาก) ฉันพยายามทุกอย่างเพื่อให้โปร่งใสและหายไป (เพื่อให้กล่องโต้ตอบทั้งหมดเป็นเพียงเค้าโครงเชิงเส้น - กล่องโค้ง) สำหรับ DialogFragment นี่คือสิ่งที่ฉันมีสำหรับ onCreateView @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null); LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item); populateItemData(item, inflater); return layout; } custom_dialog เป็นเพียง LinearLayout ที่มี android: backgroung ตั้งค่าเป็น # 000000 นี่คือสไตล์ของฉันสำหรับ …

18
วิธีสร้างความกว้าง DialogFragment เป็น Fill_Parent
ฉันกำลังทำงานกับแอปพลิเคชัน Android ที่ฉันใช้DialogFragmentเพื่อแสดงกล่องโต้ตอบ แต่ความกว้างของมันมีขนาดเล็กมาก ฉันจะทำให้กว้างขนาดนี้fill_parentได้อย่างไร? public class AddNoteDialogFragment extends DialogFragment { public AddNoteDialogFragment() { // Empty constructor required for DialogFragment } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getString(R.string.app_name)); View view = inflater.inflate(R.layout.fragment_add_note_dialog, container); return view; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.