คำถามติดแท็ก builder

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()แต่มันก็ไม่ทำงานตามที่โฆษณาไว้? จิม

15
คุณจะใช้รูปแบบของตัวสร้างเมื่อใด [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา อะไรคือตัวอย่างที่พบเห็นได้ทั่วไปในโลกแห่งความจริงของการใช้รูปแบบของตัวสร้าง คุณซื้ออะไร ทำไมไม่ใช้รูปแบบจากโรงงาน?

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

14
วิธีรับค่าที่แตกต่างกันสำหรับฟิลด์คอลัมน์ที่ไม่ใช่คีย์ใน Laravel
อาจจะค่อนข้างง่าย แต่ไม่รู้ว่าจะทำอย่างไร ฉันมีตารางที่สามารถมีค่าซ้ำสำหรับฟิลด์คอลัมน์ที่ไม่ใช่คีย์โดยเฉพาะ ฉันจะเขียนแบบสอบถาม SQL โดยใช้ Query Builder หรือ Eloquent ที่จะดึงแถวที่มีค่าต่างกันสำหรับคอลัมน์นั้นได้อย่างไร โปรดทราบว่าฉันไม่ได้ดึงเฉพาะคอลัมน์นั้น แต่จะใช้ร่วมกับค่าคอลัมน์อื่น ๆ ดังนั้นdistinct()อาจไม่ได้ผลจริงๆ ดังนั้นคำถามนั้นโดยพื้นฐานแล้วอาจเป็นวิธีระบุคอลัมน์ที่ฉันต้องการให้แตกต่างในแบบสอบถามตอนนี้ที่distinct()ไม่ยอมรับพารามิเตอร์?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.