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

คลาสย่อยของ Dialog ที่สามารถแสดงปุ่มหนึ่งสองหรือสามปุ่ม หากคุณต้องการแสดงเฉพาะสตริงในกล่องโต้ตอบนี้ให้ใช้เมธอด setMessage ()

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

27
กล่องโต้ตอบการขว้าง "ไม่สามารถเพิ่มหน้าต่าง - โทเค็น null ไม่ได้สำหรับแอปพลิเคชัน" ที่มี getApplication () เป็นบริบท
กิจกรรมของฉันพยายามสร้าง AlertDialog ซึ่งต้องใช้บริบทเป็นพารามิเตอร์ ทำงานได้ตามที่คาดไว้หากฉันใช้: AlertDialog.Builder builder = new AlertDialog.Builder(this); อย่างไรก็ตามฉันมักจะใช้ "สิ่งนี้" เป็นบริบทเนื่องจากมีโอกาสเกิดการรั่วไหลของหน่วยความจำเมื่อกิจกรรมถูกทำลายและสร้างใหม่แม้ในช่วงที่เรียบง่ายเช่นการหมุนหน้าจอ จากโพสต์ที่เกี่ยวข้องในบล็อกของนักพัฒนา Android : มีสองวิธีง่าย ๆ ในการหลีกเลี่ยงการรั่วไหลของหน่วยความจำที่เกี่ยวข้องกับบริบท สิ่งที่ชัดเจนที่สุดคือการหลีกเลี่ยงบริบทที่อยู่นอกขอบเขตของตัวเอง ตัวอย่างด้านบนแสดงกรณีของการอ้างอิงแบบสแตติก แต่คลาสภายในและการอ้างอิงโดยนัยของคลาสภายนอกอาจเป็นอันตรายอย่างเท่าเทียมกัน โซลูชันที่สองคือการใช้บริบทของแอปพลิเคชัน บริบทนี้จะมีชีวิตอยู่ตราบใดที่ใบสมัครของคุณยังมีชีวิตอยู่และไม่ได้ขึ้นอยู่กับวงจรชีวิตของกิจกรรม หากคุณวางแผนที่จะรักษาวัตถุที่มีอายุการใช้งานยาวนานซึ่งต้องการบริบทให้จดจำแอปพลิเคชันวัตถุ คุณสามารถรับมันได้อย่างง่ายดายโดยการเรียก Context.getApplicationContext () หรือ Activity.getApplication () แต่สำหรับAlertDialog()ทั้งgetApplicationContext()หรือgetApplication()ยอมรับว่าเป็นบริบทตามที่มันโยนข้อยกเว้น: "ไม่สามารถเพิ่มหน้าต่าง - โทเค็น null ไม่ได้สำหรับแอปพลิเคชัน" ต่อการอ้างอิง: 1 , 2 , 3 , ฯลฯ ดังนั้นสิ่งนี้ควรได้รับการพิจารณาว่าเป็น "บั๊ก" เนื่องจากเราได้รับคำแนะนำให้ใช้อย่างเป็นทางการActivity.getApplication()แต่มันก็ไม่ทำงานตามที่โฆษณาไว้? จิม

17
จะแสดงกล่องโต้ตอบใช่ / ไม่ใช่บน Android ได้อย่างไร?
ใช่ฉันรู้ว่ามี AlertDialog.Builder แต่ฉันตกใจเมื่อรู้ว่ายาก (ดีอย่างน้อยไม่เหมาะกับโปรแกรมเมอร์) เพื่อแสดงกล่องโต้ตอบใน Android ฉันเคยเป็นนักพัฒนา. NET และฉันสงสัยว่ามีสิ่งใดเทียบเท่ากับ Android ต่อไปนี้หรือไม่ if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){ // Do something... }


9
Android AlertDialog ปุ่มเดียว
ฉันต้องการตัวสร้าง AlertDialog ที่มีเพียงปุ่มเดียวที่บอกว่าตกลงหรือเสร็จสิ้นหรือบางอย่างแทนที่จะเป็นค่าเริ่มต้นใช่และไม่ใช่ สามารถทำได้ด้วย AlertDialog มาตรฐานหรือฉันจะต้องใช้อย่างอื่นหรือไม่?

11
ฉันจะเปลี่ยนสีข้อความปุ่มเริ่มต้นใน Android 5 ได้อย่างไร
ฉันมีกล่องโต้ตอบการแจ้งเตือนมากมายในแอพของฉัน เป็นเค้าโครงเริ่มต้น แต่ฉันเพิ่มปุ่มบวกและลบในกล่องโต้ตอบ ดังนั้นปุ่มจะได้รับสีข้อความเริ่มต้นของ Android 5 (สีเขียว) ฉันพยายามเปลี่ยนมันโดยไม่ประสบความสำเร็จ ความคิดใด ๆ วิธีการเปลี่ยนสีของข้อความนั้น? กล่องโต้ตอบที่กำหนดเองของฉัน: public class MyCustomDialog extends AlertDialog.Builder { public MyCustomDialog(Context context,String title,String message) { super(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); View viewDialog = inflater.inflate(R.layout.dialog_simple, null, false); TextView titleTextView = (TextView)viewDialog.findViewById(R.id.title); titleTextView.setText(title); TextView messageTextView = (TextView)viewDialog.findViewById(R.id.message); messageTextView.setText(message); this.setCancelable(false); this.setView(viewDialog); …

6
วิธีใช้และจัดรูปแบบ AlertDialog ใหม่จาก appCompat 22.1 ขึ้นไป
ฉันกำลังพยายามโยกย้ายจาก Android เริ่มต้นAlertDialogไปเป็นอุปกรณ์ใหม่ที่รวมอยู่ใน appCompat-22.1 เท่านี้ฉันเข้าใจว่าคุณต้องนำเข้าandroid.support.v7.app.AlertDialogแพ็คเกจเพื่อใช้งานเท่านั้น แต่ฉันจะจัดสไตล์ได้อย่างไร ตัวอย่างเช่นเปลี่ยนสีปุ่มบวก / ลบสีชื่อสีข้อความและสีพื้นหลัง?

10
คำเตือน“ หลีกเลี่ยงการส่ง null เป็นรูทมุมมอง” เมื่อขยายมุมมองเพื่อใช้โดย AlertDialog
ฉันได้รับการเตือนผ้าสำลี, Avoid passing null as the view rootเมื่อพองมุมมองกับnullเป็นparentเช่น: LayoutInflater.from(context).inflate(R.layout.dialog_edit, null); อย่างไรก็ตามมุมมองจะถูกใช้เป็นเนื้อหาของ an AlertDialogโดยใช้setViewบนAlertDialog.Builderดังนั้นฉันไม่รู้ว่าควรส่งผ่านอะไรเป็นไฟล์parent. คุณคิดว่าparentกรณีนี้ควรเป็นอย่างไร?

8
“ android.view.WindowManager $ BadTokenException: ไม่สามารถเพิ่มหน้าต่าง” บน buider.show ()
จากหลักของฉันฉันต้องการที่จะเรียกระดับชั้นและวิธีการที่อยู่ในระดับที่ฉันต้องแสดงactivity AlertDialogหลังจากปิดแล้วเมื่อกดปุ่มตกลงให้ส่งต่อไปยัง Google Play เพื่อซื้อ สิ่งต่างๆทำงานได้อย่างสมบูรณ์แบบเกือบตลอดเวลา แต่สำหรับผู้ใช้ไม่กี่คนมันขัดข้องbuilder.show()และฉันเห็น"android.view.WindowManager$BadTokenException:ไม่สามารถเพิ่มหน้าต่าง "จากบันทึกข้อขัดข้องโปรดแนะนำ รหัสของฉันค่อนข้างเป็นแบบนี้: public class classname1 extends Activity{ public void onCreate(Bundle savedInstanceState) { this.requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.<view>); //call the <className1> class to execute } private class classNamename2 extends AsyncTask<String, Void, String>{ protected String doInBackground(String... params) {} protected void onPostExecute(String result){ if(page.contains("error")) { AlertDialog.Builder builder = …

4
ฉันจะเพิ่มปุ่มที่สามในกล่องโต้ตอบการแจ้งเตือนของ Android ได้อย่างไร
API ระบุว่ากล่องโต้ตอบการแจ้งเตือนสามารถมีปุ่มหนึ่งสองหรือสามปุ่ม แต่ SDK อนุญาตให้ใช้ปุ่มบวกและลบเท่านั้น ฉันจะเพิ่มปุ่มที่สามได้อย่างไร?

14
ฉันจะเปลี่ยนสีของชื่อ AlertDialog และสีของบรรทัดข้างใต้ได้อย่างไร
ฉันเปลี่ยนสีของชื่อ AlertDialog โดยใช้คำสั่งนี้ alert.setTitle( Html.fromHtml("<font color='#FF7F27'>Set IP Address</font>")); แต่ฉันต้องการเปลี่ยนสีของเส้นที่ปรากฏใต้ชื่อเรื่อง ฉันจะทำอย่างไร หมายเหตุ: ฉันไม่ต้องการใช้เค้าโครงที่กำหนดเอง

11
วิธีใช้ AlertDialog View แบบกำหนดเอง
ในเอกสาร Android บน AlertDialogจะให้คำแนะนำและตัวอย่างต่อไปนี้สำหรับการตั้งค่ามุมมองแบบกำหนดเองใน AlertDialog: หากคุณต้องการแสดงมุมมองที่ซับซ้อนขึ้นให้ค้นหา FrameLayout ที่เรียกว่า "body" และเพิ่มมุมมองของคุณเข้าไป: FrameLayout fl = (FrameLayout) findViewById(R.id.body); fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT)); ปิดครั้งแรกก็เห็นได้ชัดเลยว่าเป็นพิมพ์ผิดและมีขึ้นเพื่อเป็นadd()addView() ฉันสับสนกับบรรทัดแรกโดยใช้ R.id.body ดูเหมือนว่าจะเป็นองค์ประกอบของ AlertDialog ... แต่ฉันไม่สามารถป้อนสิ่งนั้นในรหัส b / c ของฉันได้มันทำให้เกิดข้อผิดพลาดในการคอมไพล์ R.id.body ได้รับการกำหนดหรือมอบหมายหรืออะไรก็ตาม นี่คือรหัสของฉัน ฉันพยายามใช้setView(findViewById(R.layout.whatever)กับตัวสร้าง แต่ไม่ได้ผล ฉันคิดว่าเพราะฉันไม่ได้ขยายมันด้วยตนเอง? AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Title") .setCancelable(false) .setPositiveButton("Go", new DialogInterface.OnClickListener() { @Override public void …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.