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

คำถามเกี่ยวกับการสร้างหรือจัดการกิจกรรมใน Android ในแอปพลิเคชัน Android กิจกรรมคือส่วนประกอบที่ให้ส่วนต่อประสานกับผู้ใช้ที่อนุญาตให้ผู้ใช้ทำบางสิ่งบางอย่าง ตัวอย่างง่ายๆคือ: หมุนโทรศัพท์ถ่ายภาพส่งอีเมลหรือดูแผนที่

4
getApplication () กับ getApplicationContext ()
ฉันไม่สามารถหาคำตอบที่น่าพอใจได้ดังนั้นเราไปที่: จัดการกับอะไรActivity/Service.getApplication()และContext.getApplicationContext()? ในแอปพลิเคชันของเราทั้งคู่จะส่งคืนวัตถุเดียวกัน ActivityTestCaseอย่างไรก็ตามในการเยาะเย้ยแอปพลิเคชันจะgetApplication()กลับมาพร้อมกับการเยาะเย้ย แต่getApplicationContextจะยังคงกลับตัวอย่างบริบทที่แตกต่างกัน (หนึ่งฉีดโดย Android) นั่นเป็นข้อบกพร่องหรือไม่? มันตั้งใจหรือไม่ ฉันไม่เข้าใจความแตกต่างตั้งแต่แรก มีกรณีนอกชุดทดสอบที่การโทรทั้งสองอาจกลับมาพร้อมกับวัตถุที่แตกต่างกันหรือไม่? เมื่อใดและเพราะเหตุใด ยิ่งไปกว่านั้นคือเหตุผลที่getApplicationกำหนดไว้บนActivityและServiceแต่ไม่ได้อยู่Context? ไม่ควรมีอินสแตนซ์แอปพลิเคชันที่ใช้ได้จากทุกที่ใช่หรือไม่

11
เปลี่ยนกิจกรรมเริ่มต้นของแอปพลิเคชัน
ฉันสร้างเนื้อและความกล้าในแอปพลิเคชันของฉันแล้ว แต่ฉันต้องการเพิ่มกิจกรรมอื่นที่จะเป็นจุดเริ่มต้น (เรียงลำดับของหน้าจอเข้าสู่ระบบ) คำถามคู่: 1 ฉันมีมือจับที่ค่อนข้างดีเกี่ยวกับวิธีการสลับระหว่างกิจกรรม (ตามบทความนี้: http://www.linux-mag.com/id/7498 ) แต่ฉันไม่แน่ใจว่าจะทำอย่างไรในการสร้างกิจกรรมใหม่ ( กับคราส) 2 เมื่อฉันสร้างกิจกรรมใหม่ฉันจะตั้งเป็นกิจกรรมเริ่มต้นของแอปพลิเคชันของฉันได้อย่างไร ฉันคิดว่าฉันสามารถเปลี่ยนชื่อคลาสได้ ... แต่มีวิธีที่สง่างามกว่านี้ในการจัดการกับมัน (อาจจะอยู่ในAndroidManifest.xml)

15
การลบกิจกรรมออกจากสแต็กประวัติ
แอพของฉันแสดงกิจกรรมการสมัครเป็นครั้งแรกที่ผู้ใช้รันแอพดูเหมือนว่า: ActivitySplashScreen (ยินดีต้อนรับสู่เกมสมัครใช้งานบัญชี?) ActivitySplashScreenSignUp (ดีมากกรอกข้อมูลนี้) ActivityGameMain (หน้าจอเกมหลัก) ดังนั้นกิจกรรมที่เปิดตัวกันในลำดับที่เมื่อผู้ใช้คลิกผ่านปุ่มในแต่ละหน้าจอ เมื่อผู้ใช้เปลี่ยนจากกิจกรรม # 2 ถึง # 3 เป็นไปได้ไหมที่จะลบ # 1 และ # 2 ออกจากสแต็กประวัติทั้งหมด? ฉันต้องการให้ผู้ใช้อยู่ที่ # 3 และกดปุ่มย้อนกลับพวกเขาเพียงไปที่หน้าจอหลักแทนที่จะกลับไปที่หน้าจอเริ่มต้น ฉันคิดว่าฉันสามารถทำสิ่งนี้ได้ด้วยงาน (เช่นเริ่มงานใหม่ใน # 3) แต่ต้องการดูว่ามีวิธีที่ง่ายกว่านี้ไหม ขอบคุณ


27
เสร็จสิ้นกิจกรรมก่อนหน้านี้ทั้งหมด
แอปพลิเคชันของฉันมีหน้าจอโฟลว์ต่อไปนี้: Home->screen 1->screen 2->screen 3->screen 4->screen 5 ตอนนี้ฉันมีlog out ปุ่มทั่วไปในแต่ละหน้าจอ ( Home/ screen 1 / screen 2 /screen 3/ screen 4 / screen 5) ฉันต้องการที่เมื่อผู้ใช้คลิกที่ปุ่มออกจากระบบ (จากหน้าจอใด ๆ ) หน้าจอทั้งหมดจะเสร็จสิ้นและหน้าจอใหม่Log inจะเปิดขึ้น ฉันพยายามเกือบทั้งหมดFLAG_ACTIVITYเพื่อให้บรรลุสิ่งนี้ ฉันยังได้คำตอบบางอย่างใน stackoverflow แต่ไม่สามารถแก้ปัญหาได้ แอปพลิเคชันของฉันใช้ Android 1.6 ดังนั้นจึงไม่สามารถใช้งานได้FLAG_ACTIVITY_CLEAR_TASK มีวิธีใดในการแก้ปัญหาหรือไม่

24
การเรียก startActivity () จากด้านนอกของบริบทกิจกรรม
ฉันใช้งานListViewแอปพลิเคชัน Android ของฉันแล้ว ฉันผูกกับสิ่งนี้ListViewโดยใช้คลาสย่อยที่กำหนดเองของArrayAdapterชั้นเรียน ภายในแทนที่วิธีการที่ผมกำหนดArrayAdapter.getView(...) OnClickListenerในonClickวิธีการOnClickListenerฉันต้องการเปิดกิจกรรมใหม่ ฉันได้รับการยกเว้น: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? ฉันจะทราบได้อย่างไรContextว่าListView(ปัจจุบันActivity) ทำงานภายใต้

13
ล้างสแต็กประวัติทั้งหมดและเริ่มกิจกรรมใหม่บน Android
เป็นไปได้หรือไม่ที่จะเริ่มกิจกรรมบนสแต็กทำการล้างประวัติทั้งหมดก่อนหน้า สถานการณ์ ฉันมีกิจกรรมสแต็กที่ไป A-> B-> C หรือ B-> C (หน้าจอ A เลือกโทเค็นผู้ใช้ แต่ผู้ใช้จำนวนมากมีโทเค็นเดียวเท่านั้น) ในหน้าจอ C ผู้ใช้อาจดำเนินการซึ่งทำให้หน้าจอ B ไม่ถูกต้องดังนั้นแอปพลิเคชันต้องการนำพวกเขาไปที่หน้าจอ A ไม่ว่าจะอยู่ในสแต็กหรือไม่ก็ตาม หน้าจอ A ควรเป็นรายการเดียวในสแต็กในแอปพลิเคชันของฉัน หมายเหตุ มีคำถามที่คล้ายกันอื่น ๆ อีกมากมาย แต่ฉันไม่พบสิ่งใดที่ตอบคำถามตรงนี้ ฉันพยายามโทรgetParent().finish()- ซึ่งจะส่งผลให้เกิดข้อยกเว้นตัวชี้โมฆะเสมอ FLAG_ACTIVITY_CLEAR_TOPใช้งานได้เฉพาะถ้ากิจกรรมอยู่ในสแต็กแล้ว

30
Android: ล้างสแต็คด้านหลัง
ใน Android ฉันมีกิจกรรมบางอย่างสมมติว่า A, B, C ใน A ฉันใช้รหัสนี้เพื่อเปิด B: Intent intent = new Intent(this, B.class); startActivity(intent); ใน B ฉันใช้รหัสนี้เพื่อเปิด C: Intent intent = new Intent(this, C.class); startActivity(intent); เมื่อผู้ใช้แตะปุ่มใน C ฉันต้องการกลับไปที่ A และล้าง back stack (ปิดทั้ง B และ C) ดังนั้นเมื่อผู้ใช้ใช้ปุ่มย้อนกลับ B และ C จะไม่ปรากฏขึ้นฉันได้ลองทำสิ่งต่อไปนี้: Intent intent = new Intent(this, A.class); …

15
ค่ากำหนดที่แชร์ของ Android สำหรับการสร้างกิจกรรมครั้งเดียว (ตัวอย่าง) [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันมีสามกิจกรรม A, B และ C ที่ A และ B เป็นรูปแบบและหลังจากกรอกและบันทึกข้อมูลแบบฟอร์มในฐานข้อมูล (SQLITE) ฉันกำลังใช้ความตั้งใจจาก A ถึง B แล้ว B ถึง C สิ่งที่ฉันต้องการคือทุกครั้งที่ฉันเปิดแอปของฉันฉันต้องการ C เป็นหน้าจอหลักของฉันไม่ใช่ A และ B อีกต่อไป ฉันเดาว่าค่ากำหนดที่ใช้ร่วมกันจะใช้งานได้ แต่ฉันไม่สามารถหาตัวอย่างที่ดีเพื่อให้เป็นจุดเริ่มต้นให้ฉันได้ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

5
เริ่มกิจกรรมด้วยพารามิเตอร์
ฉันใหม่มากในการพัฒนา Android ฉันต้องการสร้างและเริ่มกิจกรรมเพื่อแสดงข้อมูลเกี่ยวกับเกม ฉันแสดงข้อมูลว่าฉันต้องการรหัสเกม ฉันจะส่ง ID เกมนี้ไปยังกิจกรรมได้อย่างไร ID เกมจำเป็นอย่างยิ่งดังนั้นฉันไม่ต้องการสร้างหรือเริ่มกิจกรรมหากไม่มี ID มันก็เหมือนกับการทำกิจกรรมได้มีเพียงหนึ่งตัวสร้างพารามิเตอร์หนึ่ง ฉันจะทำสิ่งนั้นได้อย่างไร ขอบคุณ

12
ฉันจะปิดการใช้งานการวางแนวบน Android ได้อย่างไร?
ฉันมีแอปพลิเคชันที่ฉันต้องการใช้ในโหมดแนวตั้งดังนั้นฉันจึงกำหนด android: screenOrientation = "portrait" ในรายการ XML ใช้งานได้กับโทรศัพท์ HTC Magic (และป้องกันการเปลี่ยนทิศทางในโทรศัพท์อื่น ๆ ด้วย) แต่ฉันมีปัญหากับโทรศัพท์ HTC G1เมื่อฉันเปิดคีย์บอร์ด QWERTY (ไม่ใช่คีย์บอร์ดเสมือน) กิจกรรมของฉันอยู่ในโหมดแนวตั้ง แต่ดูเหมือนจะเริ่มต้นใหม่และสูญเสียสถานะทั้งหมด นี้ไม่ได้เกิดขึ้นกับHTC Heroรุ่น แอปพลิเคชันของฉันค่อนข้างใหญ่ดังนั้นฉันไม่ต้องการให้รีสตาร์ทและสูญเสียสถานะทั้งหมดเมื่อเปิดแป้นพิมพ์ ฉันจะป้องกันได้อย่างไร

5
จะส่งคืนผลลัพธ์ (startActivityForResult) จากกิจกรรม TabHost อย่างไร
ในตัวอย่างของฉันฉันมี 3 คลาส: Class A ซึ่งเป็นกิจกรรมหลัก คลาส A เรียก startActivityForResult: Intent intent = new Intent(this, ClassB.class); startActivityForResult(intent, "STRING"); คลาส B คลาสนี้เป็น TabActivity: Intent intent = new Intent(this, ClassC.class); tabHost.addTab... คลาส C คลาสนี้เป็นกิจกรรมปกติ: Intent intent = this.getIntent(); intent.putExtra("SOMETHING", "EXTRAS"); this.setResult(RESULT_OK, intent); finish(); onActivityResult ถูกเรียกใน Class A แต่ resultCode นั้นRESULT_CANCELEDแทนRESULT_OKและเจตนาที่ส่งคืนเป็นโมฆะ ฉันจะส่งคืนบางสิ่งจากกิจกรรมภายใน TabHost …

11
จะแสดงกล่องโต้ตอบเพื่อยืนยันว่าผู้ใช้ต้องการออกจากกิจกรรม Android ได้อย่างไร
ฉันพยายามแสดงข้อความ "คุณต้องการออกหรือไม่" ชนิดของกล่องโต้ตอบเมื่อผู้ใช้พยายามออกจากกิจกรรม อย่างไรก็ตามฉันไม่พบ API hooks ที่เหมาะสม Activity.onUserLeaveHint()เริ่มแรกดูมีแนวโน้ม แต่ฉันไม่สามารถหาวิธีหยุดกิจกรรมจากการทำกิจกรรมให้เสร็จ

9
กิจกรรม AppCompatActivity, FragmentActivity และ ActionBarActivity: เมื่อใดที่จะใช้
ฉันมาจาก iOS ที่ง่ายและคุณใช้ UIViewController อย่างไรก็ตามในสิ่งที่ Android ดูเหมือนซับซ้อนมากขึ้นด้วย UIComponents บางอย่างสำหรับระดับ API ที่เฉพาะเจาะจง ฉันอ่าน BigNerdRanch สำหรับ Android (หนังสือเล่มนี้คือประมาณ 2 ปี) และพวกเขาแนะนำให้ผมใช้ในการเป็นเจ้าภาพของฉันActivity FragmentActivitiesอย่างไรก็ตามฉันคิดว่าActivityเลิกใช้แล้ว ดังนั้นสำหรับ API ระดับ 22 (ด้วยการสนับสนุนขั้นต่ำสำหรับ API ระดับ 15 หรือ 16) ฉันควรใช้ทั้งสองอย่างในการโฮสต์ส่วนประกอบและส่วนประกอบเองอย่างไร มีการใช้สำหรับสิ่งเหล่านี้ทั้งหมดหรือฉันควรใช้เพียงหนึ่งหรือสองอย่าง

13
อะไรคือวิธีที่ดีที่สุดในการใช้สตรีมกิจกรรมโซเชียล [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันสนใจที่จะรับฟังความคิดเห็นของคุณซึ่งเป็นวิธีที่ดีที่สุดในการดำเนินการสตรีมกิจกรรมโซเชียล (Facebook เป็นตัวอย่างที่โด่งดังที่สุด) ปัญหา / ความท้าทายที่เกี่ยวข้องคือ: กิจกรรมประเภทต่าง ๆ (การโพสต์การแสดงความคิดเห็น .. ) วัตถุประเภทต่าง ๆ (โพสต์ความคิดเห็นภาพถ่าย .. ) ผู้ใช้ 1-n ที่เกี่ยวข้องกับบทบาทที่แตกต่างกัน ("ผู้ใช้ x ตอบกลับความคิดเห็นของผู้ใช้ในโพสต์ Z ของผู้ใช้") มุมมองที่แตกต่างกันของรายการกิจกรรมเดียวกัน ("คุณแสดงความคิดเห็น .. " กับ "เพื่อนของคุณ x แสดงความคิดเห็น" กับ "ผู้ใช้ x แสดงความคิดเห็น .. " => 3 การเป็นตัวแทนของกิจกรรม "ความคิดเห็น") …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.