ฉันจะเข้าถึงกิจกรรมหลักโดยทางโปรแกรมจาก Surfaceview เพื่อลบ adView ได้อย่างไร

กิจกรรมหลักของฉันเรียกว่าเกม Surfaceview ของฉัน โดยตั้งค่าเลย์เอาต์ด้วย adview และ Surfaceview ที่เพิ่มเข้ามา (ตอนแรกฉันไม่ได้ใช้เลย์เอาต์เลยก่อนที่จะต้องโฆษณาแบนเนอร์) อย่างไรก็ตาม ฉันไม่สามารถเข้าถึงกิจกรรมหลักจาก Surfaceview เพื่อเปลี่ยนเค้าโครงได้ ดังนั้นจึงไม่รวม Adview เมื่อเกมเริ่ม ฉันถูกบังคับให้เปิดแบนเนอร์อย่างต่อเนื่องด้วยเหตุนี้ ความพยายามที่จะฆ่าโฆษณายังคงมีแบนเนอร์ว่างอยู่ มีใครรู้วิธีเข้าถึงฟังก์ชั่นกิจกรรมหลักจาก Surfaceview บ้างคะ

ฉันสร้างฟังก์ชัน removead() ในกิจกรรมหลักเพื่อกำหนดมุมมองบริบทใหม่โดยไม่มี adView แต่ฉันไม่สามารถเข้าถึงได้

context ซึ่งเป็นกิจกรรมหลักจะถูกส่งไปยัง Surfaceview เมื่อสร้าง ฉันพยายามแล้ว:

context.removead();
this.getContext().removead();
((Activity) this.getContext()).removead();
ViewGroup vg = (ViewGroup)(
this.getParent());
vg.removeView(adView);

person Androidcoder    schedule 10.09.2013    source แหล่งที่มา


คำตอบ (1)


ฉันล้มเลิกความพยายามที่จะควบคุม adAiew โดยตรงจาก SurfaceView แต่สร้างตัวจัดการในกิจกรรมหลักแทนและส่งข้อความถึงมันจาก SurfaceView กิจกรรมหลักที่สร้างขึ้น จากนั้นตัวจัดการจะเรียก VISIBLE หรือ GONE ไปที่ adAiew ขึ้นอยู่กับข้อความที่ส่ง

person Androidcoder    schedule 10.09.2013
comment
แนวคิดอื่นก็คือการใช้การใช้งานบัสเหตุการณ์ ด้วยวิธีนี้คุณสามารถโพสต์ข้อความและฟังข้อความได้ EventBus ใช้งานง่ายและได้รับความนิยม แต่โซลูชันของคุณประสบความสำเร็จไม่มากก็น้อยเหมือนกับการใช้ BroadcastReceiver เนื่องจาก Android เป็นโมเดลที่ขับเคลื่อนด้วยเหตุการณ์ตั้งแต่เริ่มต้น - person Ali; 12.09.2013