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

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

3
@hide หมายถึงอะไรในซอร์สโค้ด Android
สำหรับActivityซอร์สโค้ดบรรทัด 3898 (ใกล้กับด้านล่าง): /** * @hide */ public final boolean isResumed() { return mResumed; } อะไร@hideหมายถึง? ฉันพบว่าpublic class ChildActivity extends Activity { ... }ไม่สามารถใช้ / ดูActivity.isResumed()ได้ เป็นเรื่องปกติหรือไม่? ฉันจะเข้าถึงได้อย่างไร?

7
วงจรชีวิตของ Android Fragment เหนือการเปลี่ยนแปลงการวางแนว
การใช้แพ็คเกจความเข้ากันได้เพื่อกำหนดเป้าหมาย 2.2 โดยใช้ Fragments หลังจากเข้ารหัสกิจกรรมเพื่อใช้แฟรกเมนต์ในแอพแล้วฉันไม่สามารถรับการเปลี่ยนแปลงการวางแนว / การจัดการสถานะทำงานได้ดังนั้นฉันจึงสร้างแอพทดสอบขนาดเล็กที่มี FragmentActivity เดียวและ Fragment เดียว บันทึกจากการเปลี่ยนแปลงการวางแนวเป็นเรื่องแปลกโดยมีการเรียกหลายครั้งไปยังส่วน OnCreateView เห็นได้ชัดว่าฉันขาดอะไรบางอย่างเช่นการแยกชิ้นส่วนและติดตั้งใหม่แทนที่จะสร้างอินสแตนซ์ใหม่ แต่ฉันไม่เห็นเอกสารใด ๆ ที่จะระบุว่าฉันทำผิดพลาดตรงไหน ใครช่วยให้ความกระจ่างเกี่ยวกับสิ่งที่ฉันทำผิดที่นี่ได้โปรด ขอบคุณ บันทึกจะเป็นดังนี้หลังจากเปลี่ยนการวางแนว Initial creation 12-04 11:57:15.808: D/FragmentTest.FragmentTestActivity(3143): onCreate 12-04 11:57:15.945: D/FragmentTest.FragmentOne(3143): OnCreateView 12-04 11:57:16.081: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState null Orientation Change 1 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): onSaveInstanceState 12-04 11:57:39.031: D/FragmentTest.FragmentTestActivity(3143): onCreate 12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView …

11
วิธีส่งวัตถุผ่านบันเดิล
ฉันต้องส่งการอ้างอิงไปยังคลาสที่ประมวลผลส่วนใหญ่ผ่านบันเดิล ปัญหาคือมันไม่เกี่ยวข้องกับเจตนาหรือบริบทและมีวัตถุที่ไม่ใช่ดั้งเดิมจำนวนมาก ฉันจะบรรจุคลาสเป็นแบบพัสดุ / ซีเรียลได้และส่งต่อไปยัง a ได้startActivityForResultอย่างไร

2
Android ทำลายกิจกรรมกระบวนการฆ่า
สวัสดีฉันสงสัยว่า Android จัดการหน่วยความจำอย่างไรและฉันไม่พบคำตอบที่แน่นอน สมมติว่าฉันมีแอปพลิเคชันที่มี 5 กิจกรรมในสแต็กกิจกรรมปัจจุบัน (4 หยุดและ 1 จะกลับมาทำงานต่อ) ไม่มีบริการเชื่อมต่อ ฉันกดปุ่ม HOME เพื่อให้กิจกรรมทั้งหมดของฉันหยุดลง ฉันเปิดแอปพลิเคชั่นที่ใช้หน่วยความจำอื่น ๆ และหน่วยความจำอุปกรณ์โดยรวมเริ่มเหลือน้อย และคำถามคือ ... จะเกิดอะไรขึ้นกับใบสมัครของฉัน? ระบบสามารถทำลายกิจกรรมเพียงอย่างเดียวหรือบางส่วนเพื่อกู้คืนหน่วยความจำได้หรือไม่? ระบบจะฆ่ากระบวนการทั้งหมดของแอปพลิเคชันของฉันหรือไม่ กิจกรรมทั้งหมดจะถูกทำลายลงหรือไม่? จะเกิดอะไรขึ้นเมื่อฉันกลับไปที่แอปพลิเคชันของฉันเมื่อมันถูกฆ่าทั้งหมด? จะเริ่มจากการขอทาน (เช่นการเริ่มครั้งแรก) หรือจะพยายามกู้คืนกิจกรรมให้กลับสู่สถานะที่เป็นที่นิยม / ถ้าใช่ - เป็นเพียงกิจกรรมที่อยู่ด้านบนสุดของสแต็กหรือทั้งหมด? UPDATE: ก่อนที่จะถามคำถามนี้ฉันเคยเห็นวงจรชีวิตของกิจกรรมสองสามครั้ง แต่ไม่มีคำตอบสำหรับคำถามของฉัน ฉันทำแบบทดสอบและมีคำตอบ "หยุดกระบวนการ" ใน DDMS เป็นเบาะแสสำหรับการทดสอบ ฉันยังไม่ได้ทดสอบคำตอบสำหรับคำถาม 1 แต่ตามที่ไกด์บอกว่า: หากกิจกรรมถูกหยุดชั่วคราวหรือหยุดระบบสามารถยกเลิกกิจกรรมจากหน่วยความจำได้โดยขอให้กิจกรรมนั้นเสร็จสิ้นหรือเพียงแค่ฆ่ากระบวนการ ดูเหมือนว่ากิจกรรมอย่างน้อยหนึ่งอย่างสามารถทำลายได้อย่างนุ่มนวล (ด้วยวิธี onDestroy) โดยไม่ต้องฆ่ากระบวนการ คุณจะได้รับ (onCreate + …

5
เริ่มบริการใน Android
ฉันต้องการเรียกใช้บริการเมื่อกิจกรรมเริ่มต้นขึ้น ดังนั้นนี่คือคลาสบริการ: public class UpdaterServiceManager extends Service { private final int UPDATE_INTERVAL = 60 * 1000; private Timer timer = new Timer(); private static final int NOTIFICATION_EX = 1; private NotificationManager notificationManager; public UpdaterServiceManager() {} @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override …

4
จะให้ภาพเคลื่อนไหวเมื่อเรียกกิจกรรมอื่นใน Android ได้อย่างไร
ฉันมีสองกิจกรรม A และ B ฉันต้องการให้แอนิเมชั่นลดขนาดเมื่อกิจกรรม A เรียก B และขยายภาพเคลื่อนไหวให้ใหญ่ที่สุดเมื่อกิจกรรม B เรียก A ฉันไม่ต้องการไฟล์ xml ของแอนิเมชั่นสำหรับสิ่งนี้ เมื่อเราเรียกกิจกรรมอื่นใน Android มันจะให้ภาพเคลื่อนไหวเริ่มต้นจากนั้นเรียกว่าภาพเคลื่อนไหวลดขนาด สิ่งที่ฉันต้องการคือไม่ควรเกิดภาพเคลื่อนไหวเริ่มต้นและภาพเคลื่อนไหวที่ฉันต้องการควรเกิดขึ้น เราสามารถให้ภาพเคลื่อนไหวเมื่อเรียกใช้กิจกรรมอื่นได้หรือไม่?

3
ความเข้าใจเพิ่มเติม setRetainInstance (true)
สิ่งที่ว่าเกิดขึ้นเมื่อคุณโทรsetRetainInstance(true)บนFragment? เอกสารนั้นแทบไม่มีอยู่จริงและดูเหมือนว่าเป็นหน้าที่ที่สำคัญมาก โดยเฉพาะฉันต้องการทราบว่าลำดับนี้ (ที่ฉันสร้างขึ้น) เป็นจริงมากแค่ไหน: ผู้ใช้หมุนเครื่อง ส่วนที่แยกออกจากActivityและFragment.onDetach()ถูกเรียก กิจกรรมถูกทำลาย Activity.onDestroy()ถูกเรียก. Activityวัตถุ Java เป็นลบ (เมื่อเป็นไปได้โดยการ GC) สร้างActivityวัตถุ java ใหม่ ตัวสร้างและonCreate()เรียกว่า ในActivity.onCreate()เรามีsetContentView(...)ซึ่งกำหนดเลย์เอาต์ที่มีแฟรกเมนต์หรือใช้FragmentTransaction เพื่อเพิ่มแฟรกเมนต์ ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้จริงๆ แต่ฉันคิดว่า android ฉลาดพอที่จะค้นหาชิ้นส่วนเก่าและโทรหาFragment.onAttach()เพื่อแนบกลับเข้าไปใหม่Activity ถัดไป (หรือก่อนหน้านี้ใครจะรู้?) Activity.onResume()เรียกว่า ถูกต้องหรือไม่? Android ฉลาดพอที่จะค้นหาชิ้นส่วนเก่าแม้ว่าฉันจะใช้FragmentTransaction.add(new MyFragment(), ...)ครั้งแรกอย่างชัดเจนหรือไม่ และถ้าเป็นเช่นนั้นฉันจะหลีกเลี่ยงการเพิ่มส่วนอื่นในได้onCreate()อย่างไร ฉันต้องทำสิ่งนี้หรือไม่: if (getSupportFragmentManager().findFragmentByTag("foo") == null) { FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(new FooFragment(), "foo").commit(); }

17
Kotlin Android เริ่มกิจกรรมใหม่
ฉันต้องการเริ่มกิจกรรมอื่นบน Android แต่ได้รับข้อผิดพลาดนี้: โปรดระบุการร้องขอตัวสร้าง ลักษณนาม 'Page2' ไม่มีวัตถุร่วม หลังจากสร้างอินสแตนซ์Intentคลาสแล้ว ฉันควรทำอย่างไรเพื่อแก้ไขข้อผิดพลาด รหัสของฉัน: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun buTestUpdateText2 (view: View) { val changePage = Intent(this, Page2) // Error: "Please specify constructor invocation; // classifier 'Page2' does not have a companion object" startActivity(changePage) } …

23
จะตรวจสอบได้อย่างไรว่ากิจกรรมอยู่เบื้องหน้าหรือในพื้นหลังที่มองเห็นได้?
ฉันมีหน้าจอเริ่มต้นในตัวจับเวลา ปัญหาของฉันคือว่าก่อนที่ฉันfinish()กิจกรรมของฉันฉันต้องตรวจสอบว่ากิจกรรมถัดไปได้เริ่มต้นเพราะกล่องระบบการสนทนาปรากฏขึ้นและฉันต้องการfinish(); เมื่อผู้ใช้เลือกตัวเลือกจากกล่องโต้ตอบแล้ว? ฉันรู้ว่ามีคำถามมากมายเกี่ยวกับวิธีดูว่ากิจกรรมของคุณอยู่เบื้องหน้าหรือไม่ แต่ฉันไม่รู้ว่าสิ่งนี้อนุญาตให้มีกล่องโต้ตอบอยู่ด้านบนของกิจกรรมด้วยหรือไม่ นี่คือปัญหาสีแดงคือกิจกรรมของฉันซึ่งอยู่เบื้องหลังในขณะที่บทสนทนาอยู่เบื้องหน้า: แก้ไข:ฉันได้ลองเพียงแค่ไม่ได้ใช้งานfinish()แต่กิจกรรมของฉันสามารถย้อนกลับไปในกลุ่มแอปพลิเคชันที่ฉันพยายามหลีกเลี่ยงได้

7
ฉันจะรักษาโหมดใหญ่พิเศษในกล่องโต้ตอบได้อย่างไร
ฉันจะรักษาโหมดใหญ่พิเศษใหม่ได้อย่างไรเมื่อกิจกรรมของฉันแสดงกล่องโต้ตอบที่กำหนดเอง ฉันกำลังใช้รหัสด้านล่างเพื่อรักษาโหมดใหญ่พิเศษในกล่องโต้ตอบ แต่ด้วยวิธีแก้ปัญหาดังกล่าว NavBar จะปรากฏขึ้นเป็นเวลาน้อยกว่าหนึ่งวินาทีเมื่อฉันเริ่มกล่องโต้ตอบที่กำหนดเองจากนั้นก็จะหายไป วิดีโอต่อไปนี้อธิบายปัญหาได้ดีขึ้น (ดูที่ด้านล่างของหน้าจอเมื่อ NavBar ปรากฏขึ้น): http://youtu.be/epnd5ghey8g ฉันจะหลีกเลี่ยงพฤติกรรมนี้ได้อย่างไร? รหัส พ่อของกิจกรรมทั้งหมดในใบสมัครของฉัน: public abstract class ImmersiveActivity extends Activity { @SuppressLint("NewApi") private void disableImmersiveMode() { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_FULLSCREEN ); } } @SuppressLint("NewApi") private void enableImmersiveMode() { if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | …

5
เมื่อใดที่เรียกว่า onSaveInstanceState () และ onRestoreInstanceState ()
รูปต่อไปนี้ (จากเอกสารอย่างเป็นทางการ ) อธิบายวงจรชีวิตที่รู้จักกันดีของกิจกรรม Android: ในทางกลับกันเมื่อกิจกรรมถูกทำลายโดยระบบ (เช่นเนื่องจากจำเป็นต้องเรียกคืนหน่วยความจำ) สถานะของกิจกรรมบางครั้งจะถูกบันทึกและเรียกคืนโดยอัตโนมัติโดยใช้วิธีการonSaveInstanceState()และonRestoreInstanceState()ดังที่แสดงในรูปต่อไปนี้ (เช่นกัน จากเอกสารอย่างเป็นทางการ ): ฉันทราบดีว่าonSaveInstanceState()จะไม่ถูกเรียกเสมอไปเมื่อกิจกรรมกำลังจะถูกทำลาย ตัวอย่างเช่นหากถูกทำลายเนื่องจากผู้ใช้กดปุ่ม "ย้อนกลับ" สถานะกิจกรรมจะไม่ถูกเก็บรักษาไว้ แต่ในกรณีที่สถานะถูกบันทึกและกู้คืนและonSaveInstanceState()/ onRestoreInstanceState()ได้รับการเรียกมันถูกเรียกเมื่อใด ยกตัวอย่างเช่นตามตัวเลขดังกล่าวข้างต้นonRestoreInstanceState()อาจจะเรียกว่าก่อนonStart()หรือหลังonStart()แต่ก่อนหรือหลังonResume() ในทำนองเดียวกันเป็นไปได้หลายที่มีอยู่สำหรับonResume() onSaveInstanceState()พวกเขาเรียกว่าเมื่อไหร่กันแน่? ตามหลักการแล้วสิ่งที่ฉันต้องการคือดูแผนภาพรวมที่แสดงสถานะวงจรชีวิตของกิจกรรมและวิธีการบันทึก / กู้คืนหากมีอยู่

10
จบกิจกรรมจากกิจกรรมอื่น
ฉันต้องการจบกิจกรรมหนึ่งจากกิจกรรมอื่นเช่น: ในกิจกรรม [A] เมื่อคลิกปุ่มฉันกำลังเรียกใช้กิจกรรม [B] โดยไม่ต้องจบกิจกรรม [A] ตอนนี้ในกิจกรรม [b] มีสองปุ่มใหม่และปรับเปลี่ยน เมื่อผู้ใช้คลิกที่แก้ไขแล้วป๊อปกิจกรรม [A] จากสแต็กโดยมีตัวเลือกทั้งหมดถูกเลือก .. แต่เมื่อผู้ใช้คลิกที่ปุ่มใหม่จากกิจกรรม [B] ฉันจะต้องจบกิจกรรม [A] จากกองซ้อนและโหลดกิจกรรมนั้น [A] อีกครั้งในสแต็ก ฉันกำลังพยายามอยู่ แต่ฉันไม่สามารถจบกิจกรรม [A] จากสแต็กได้ ... ฉันจะทำได้อย่างไร? ฉันใช้รหัสเป็น: จากกิจกรรม [A]: Intent GotoB = new Intent(A.this,B.class); startActivityForResult(GotoB,1); อีกวิธีหนึ่งในกิจกรรมเดียวกัน public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 1) …

8
ฉันจะเพิ่มแอนิเมชั่นในกิจกรรมเสร็จสิ้นได้อย่างไร ()
ฉันใช้ overridePendingTransition เมื่อมีการสร้างกิจกรรมของฉันและใช้งานได้ดีฉันเห็นว่าการจางหายไปในการทำงานที่ดี แต่เมื่อฉันพยายามเคลื่อนไหวจนจบกิจกรรมมันยังคงทำสไลด์ขวาไปซ้ายตามค่าเริ่มต้น ฉันพยายามกำหนดภาพเคลื่อนไหวออกเป็นครั้งแรกเมื่อฉันเริ่มกิจกรรมดังนี้: Intent myIntent = new Intent(a, SkdyAlert.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); a.startActivity(myIntent); if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout); } จากนั้นฉันก็ลองทำมันเมื่อเสร็จสิ้นกิจกรรมเช่นกัน okBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout); } } }); แต่วิธีการทั้งสองวิธีนี้จะป้องกันไม่ให้สไลด์ "ขวาไปซ้าย" สำหรับภาพเคลื่อนไหวออก มีความคิดเกี่ยวกับสิ่งที่ฉันทำผิดหรือไม่?

6
วิธีการส่งผ่านค่าจากกิจกรรมหนึ่งไปยังกิจกรรมก่อนหน้า
ฉันจะส่งค่าจากหน้าจอหนึ่งไปยังหน้าจอก่อนหน้าได้อย่างไร ลองพิจารณากรณีนี้: ฉันมีสองกิจกรรม หน้าจอแรกมีหนึ่งTextViewปุ่มและกิจกรรมที่สองมีหนึ่งEditTextปุ่ม ถ้าฉันคลิกปุ่มแรกมันจะต้องย้ายไปที่กิจกรรมที่สองและที่นี่ผู้ใช้ต้องพิมพ์อะไรบางอย่างในกล่องข้อความ TextViewถ้าเขากดปุ่มจากหน้าจอที่สองแล้วค่าจากกล่องข้อความควรย้ายไปที่กิจกรรมแรกและที่ควรจะถูกแสดงในกิจกรรมแรก

8
อัปเดตวิดเจ็ตโดยใช้โปรแกรมจากกิจกรรม / บริการ / ผู้รับ
ฉันรู้ว่าเป็นไปได้ แต่ฉันไม่สามารถหาวิธีเรียกการอัปเดตวิดเจ็ตของฉันจากกิจกรรมหลักได้ ไม่มีเจตนาทั่วไปที่ฉันสามารถออกอากาศได้หรือไม่?

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