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

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

10
กิจกรรม Android เป็นกล่องโต้ตอบ
ฉันมีกิจกรรมชื่อwhereActityซึ่งมีข้อความโต้ตอบของเด็กด้วย ตอนนี้ฉันต้องการแสดงกิจกรรมนี้เป็นกล่องโต้ตอบสำหรับกิจกรรมอื่น ฉันจะทำสิ่งนั้นได้อย่างไร

13
วิธีการให้บริการ Android สื่อสารกับกิจกรรม
ฉันกำลังเขียนแอปพลิเคชัน Android เครื่องแรกของฉันและพยายามทำให้การสื่อสารระหว่างบริการและกิจกรรมเป็นไปอย่างราบรื่น ฉันมีบริการที่จะทำงานในพื้นหลังและทำการบันทึกผ่าน gps และเวลา ฉันจะมีกิจกรรมที่จะใช้ในการเริ่มและหยุดบริการ ดังนั้นก่อนอื่นฉันต้องสามารถทราบได้ว่าบริการกำลังทำงานอยู่หรือไม่เมื่อเริ่มกิจกรรม มีคำถามอื่น ๆ เกี่ยวกับที่นี่ดังนั้นฉันคิดว่าฉันสามารถหาได้ (แต่อย่าลังเลที่จะให้คำแนะนำ) ปัญหาที่แท้จริงของฉัน: หากกิจกรรมกำลังทำงานอยู่และบริการเริ่มต้นขึ้นฉันต้องการวิธีที่บริการในการส่งข้อความไปยังกิจกรรม Simple Strings และ integers ณ จุดนี้ - ข้อความสถานะส่วนใหญ่ ข้อความจะไม่เกิดขึ้นเป็นประจำดังนั้นฉันจึงไม่คิดว่าการให้บริการเป็นวิธีที่ดีในการไปหากมีวิธีอื่น ฉันต้องการการสื่อสารนี้เฉพาะเมื่อผู้ใช้เริ่มต้นกิจกรรม - ฉันไม่ต้องการเริ่มกิจกรรมจากบริการ กล่าวอีกนัยหนึ่งถ้าคุณเริ่มกิจกรรมและบริการกำลังทำงานคุณจะเห็นข้อความสถานะใน UI กิจกรรมเมื่อสิ่งที่น่าสนใจเกิดขึ้น หากคุณไม่เริ่มกิจกรรมคุณจะไม่เห็นข้อความเหล่านี้ (ไม่น่าสนใจ) ดูเหมือนว่าฉันควรจะสามารถตรวจสอบว่าบริการกำลังทำงานอยู่หรือไม่และถ้าเป็นเช่นนั้นให้เพิ่มกิจกรรมเป็นผู้ฟัง จากนั้นลบกิจกรรมเป็นผู้ฟังเมื่อกิจกรรมหยุดชั่วคราวหรือหยุด เป็นไปได้จริงเหรอ? วิธีเดียวที่ฉันสามารถคิดได้ว่าจะให้กิจกรรมใช้ Parcelable และสร้างไฟล์ AIDL เพื่อให้ฉันสามารถส่งผ่านอินเทอร์เฟซระยะไกลของบริการได้ แม้ว่าจะดูเหมือน overkill และฉันก็ไม่รู้ว่า Activity ควรใช้ writeToParcel () / readFromParcel () อย่างไร …

8
วิธีป้องกันมุมมองที่กำหนดเองจากการสูญเสียสถานะการเปลี่ยนแปลงการวางแนวหน้าจอ
ฉันได้ติดตั้งสำเร็จแล้วonRetainNonConfigurationInstance()สำหรับอุปกรณ์หลักของฉันActivityในการบันทึกและกู้คืนส่วนประกอบที่สำคัญบางอย่างในการเปลี่ยนแปลงการวางแนวหน้าจอ แต่ดูเหมือนว่ามุมมองที่กำหนดเองของฉันจะถูกสร้างขึ้นใหม่ตั้งแต่ต้นเมื่อการวางแนวเปลี่ยนไป ถึงแม้ว่าในกรณีของฉันมันจะไม่สะดวกเพราะมุมมองที่กำหนดเองในคำถามคือพล็อต X / Y และจุดพล็อตจะถูกเก็บไว้ในมุมมองที่กำหนดเอง มีวิธีที่มีฝีมือในการใช้บางสิ่งที่คล้ายกับonRetainNonConfigurationInstance()สำหรับมุมมองที่กำหนดเองหรือฉันต้องใช้วิธีการในมุมมองที่กำหนดเองซึ่งอนุญาตให้ฉันรับและตั้งค่า "สถานะ" ของมันได้หรือไม่

24
ฉันจะ "เริ่มต้นใหม่" แอป Android โดยทางโปรแกรมได้อย่างไร
ประการแรกฉันรู้ว่าไม่ควรฆ่า / รีสตาร์ทแอปพลิเคชันบน Android ในกรณีการใช้งานของฉันฉันต้องการรีเซ็ตแอปพลิเคชันจากโรงงานในกรณีเฉพาะที่เซิร์ฟเวอร์ส่งข้อมูลเฉพาะไปยังลูกค้า ผู้ใช้สามารถลงชื่อเข้าใช้บนเซิร์ฟเวอร์ด้วยอินสแตนซ์ของแอปพลิเคชันเดียวเท่านั้น (เช่นไม่อนุญาตให้ใช้อุปกรณ์หลายเครื่อง) หากอินสแตนซ์อื่นได้รับการ "ล็อคอิน" - ล็อคอินสแตนซ์อื่น ๆ ทั้งหมดของผู้ใช้นั้นจะต้องลบข้อมูล (รีเซ็ตเป็นค่าจากโรงงาน) เพื่อรักษาความสอดคล้อง เป็นไปได้ที่จะบังคับให้ล็อกเพราะผู้ใช้อาจลบแอพและติดตั้งใหม่ซึ่งจะทำให้เกิดอินสแตนซ์ - id อื่นและผู้ใช้จะไม่สามารถปลดล็อคได้อีก ดังนั้นจึงเป็นไปได้ที่จะบังคับให้ล็อค เนื่องจากความเป็นไปได้ในการบังคับนั้นเราจำเป็นต้องตรวจสอบอินสแตนซ์ที่เป็นรูปธรรมเสมอว่ามันมีล็อค ที่ทำบน (เกือบ) แต่ละคำขอไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์อาจส่ง "รหัสล็อคผิด" หากตรวจพบว่าแอปพลิเคชันไคลเอนต์ต้องลบทุกอย่าง นั่นคือกรณีใช้งาน ฉันมีActivityA ที่เริ่มเข้าสู่ระบบActivityL หรือActivityB หลักของแอปขึ้นอยู่กับค่าที่ใช้ร่วมกัน Prefs หลังจากเริ่ม L หรือ B มันจะปิดตัวเองเพื่อให้เฉพาะ L หรือ B กำลังทำงาน ดังนั้นในกรณีที่ผู้ใช้เข้าสู่ระบบแล้ว B กำลังทำงานอยู่ในขณะนี้ B เริ่มต้น C. C เรียกstartServiceหาIntentServiceD …

19
ป้องกันกล่องโต้ตอบกิจกรรม Android จากการปิดเมื่อสัมผัสภายนอก
ฉันมีกิจกรรมที่ใช้สไตล์ Theme.Dialog ว่าเป็นหน้าต่างลอยเหนือกิจกรรมอื่น อย่างไรก็ตามเมื่อฉันคลิกนอกหน้าต่างข้อความ (ในกิจกรรมพื้นหลัง) กล่องโต้ตอบจะปิดลง ฉันจะหยุดพฤติกรรมนี้ได้อย่างไร

14
จะเปลี่ยนชื่อกิจกรรมใน Android ได้อย่างไร?
ฉันใช้ Window w = getWindow(); w.setTitle("My title"); เพื่อเปลี่ยนชื่อของกิจกรรมปัจจุบันของฉัน แต่ดูเหมือนจะไม่ทำงาน ใครช่วยแนะนำฉันเกี่ยวกับวิธีการเปลี่ยนแปลงนี้ได้อย่างไร

18
โหลดกิจกรรมใหม่ใน Android
เป็นวิธีปฏิบัติที่ดีในการโหลดซ้ำActivityในAndroidหรือไม่ อะไรจะเป็นวิธีที่ดีที่สุดที่จะทำ? this.finishแล้วthis.startActivityกับกิจกรรมIntent?

12
ลิ้นชักการนำทางเดียวกันในกิจกรรมต่าง ๆ
ฉันทำลิ้นชักการนำทางที่ใช้งานได้เหมือนที่แสดงในบทช่วยสอนบนเว็บไซต์developer.android.com แต่ตอนนี้ฉันต้องการใช้หนึ่งลิ้นชักนำทางฉันสร้างขึ้นใน NavigationDrawer.class สำหรับหลาย ๆ กิจกรรมในแอปพลิเคชันของฉัน คำถามของฉันคือถ้าทุกคนที่นี่สามารถทำแบบฝึกหัดเล็ก ๆ น้อย ๆ ซึ่งจะอธิบายวิธีใช้หนึ่งลิ้นชักเก็บเงินการนำทางสำหรับกิจกรรมหลายรายการ ฉันอ่านก่อนที่คำตอบนี้ ลิ้นชักการนำทาง Android ในหลาย ๆ กิจกรรม แต่มันไม่ทำงานในโครงการของฉัน public class NavigationDrawer extends Activity { public DrawerLayout drawerLayout; public ListView drawerList; private ActionBarDrawerToggle drawerToggle; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, …

8
Android - วิธีแทนที่ปุ่ม“ ย้อนกลับ” ดังนั้นมันจึงไม่เสร็จสิ้น () กิจกรรมของฉัน
ขณะนี้ฉันมีกิจกรรมที่เมื่อมันได้รับการแสดงการแจ้งเตือนจะได้รับการแสดงในแถบการแจ้งเตือน นี่คือเพื่อที่เมื่อผู้ใช้กดที่บ้านและกิจกรรมที่ถูกผลักไปที่พื้นหลังพวกเขาสามารถกลับไปที่กิจกรรมผ่านการแจ้งเตือน ปัญหาเกิดขึ้นเมื่อผู้ใช้กดปุ่มย้อนกลับกิจกรรมของฉันถูกทำลาย แต่การแจ้งเตือนยังคงอยู่เนื่องจากฉันต้องการให้ผู้ใช้สามารถกดย้อนกลับ แต่ยังสามารถเข้าถึงกิจกรรมผ่านการแจ้งเตือนได้ แต่เมื่อ USER ลองสิ่งนี้ฉันจะได้รับ Null Pointers เนื่องจากเป็นการพยายามเริ่มกิจกรรมใหม่แทนที่จะนำสิ่งเก่ากลับมา โดยพื้นฐานแล้วฉันต้องการให้ปุ่มย้อนกลับทำหน้าที่เหมือนกับปุ่มโฮมและนี่คือสิ่งที่ฉันได้ลองมาแล้ว: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5 && keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { Log.d("CDA", "onKeyDown Called"); onBackPressed(); } return super.onKeyDown(keyCode, event); } public void onBackPressed() { Log.d("CDA", "onBackPressed Called"); Intent …

11
การใช้เจตนาในแอปพลิเคชัน Android เพื่อแสดงกิจกรรมอื่น
ในแอปพลิเคชัน Android ของฉันฉันมีสองชั้นเรียนกิจกรรม ฉันมีปุ่มบนปุ่มแรกและฉันต้องการแสดงปุ่มที่สองเมื่อคลิก แต่ฉันได้รับข้อผิดพลาด นี่คือคลาส: public class FirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button orderButton = (Button)findViewById(R.id.order); orderButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(FirstActivity.this, OrderScreen.class); startActivity(intent); } }); } } คลาสที่สองที่ควรแสดงเมื่อคลิกปุ่ม แต่ไม่ทำ: public class OrderScreen extends …

8
Android Fragment getActivity () บางครั้งส่งคืนค่าว่าง
ในรายงานข้อผิดพลาดคอนโซลนักพัฒนาซอฟต์แวร์บางครั้งฉันเห็นรายงานที่มีปัญหา NPE ฉันไม่เข้าใจสิ่งที่ผิดปกติกับรหัสของฉัน ในอีมูเลเตอร์และแอปพลิเคชันอุปกรณ์ของฉันทำงานได้ดีโดยไม่ต้องใช้แรงกดอย่างไรก็ตามผู้ใช้บางคนได้รับ NullPointerException ในคลาสแฟรกเมนต์เมื่อเรียกเมธอด getActivity () กิจกรรม pulic class MyActivity extends FragmentActivity{ private ViewPager pager; private TitlePageIndicator indicator; private TabsAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { pager = (ViewPager) findViewById(R.id.pager); indicator = (TitlePageIndicator) findViewById(R.id.indicator); adapter = new TabsAdapter(getSupportFragmentManager(), false); adapter.addFragment(new FirstFragment()); adapter.addFragment(new SecondFragment()); indicator.notifyDataSetChanged(); adapter.notifyDataSetChanged(); // push …

14
getActivity () ส่งคืนค่า null ในฟังก์ชัน Fragment
ฉันมีแฟรกเมนต์ (F1) ด้วยวิธีสาธารณะเช่นนี้ public void asd() { if (getActivity() == null) { Log.d("yes","it is null"); } } และใช่เมื่อฉันเรียกมันว่า (จากกิจกรรม) มันเป็นโมฆะ ... FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction(); F1 f1 = new F1(); transaction1.replace(R.id.upperPart, f1); transaction1.commit(); f1.asd(); ต้องเป็นสิ่งที่ฉันทำผิดมาก แต่ฉันไม่รู้ว่ามันคืออะไร

10
ข้อความของศูนย์ Android บนแคนวาส
ฉันกำลังพยายามแสดงข้อความโดยใช้รหัสด้านล่าง ปัญหาคือข้อความไม่อยู่กึ่งกลางแนวนอน เมื่อฉันตั้งค่าพิกัดdrawTextมันจะตั้งค่าด้านล่างของข้อความที่ตำแหน่งนี้ ฉันต้องการให้วาดข้อความเพื่อให้ข้อความอยู่กึ่งกลางในแนวนอน นี่เป็นภาพเพื่อแสดงปัญหาของฉันเพิ่มเติม: @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); //canvas.drawRGB(2, 2, 200); Paint textPaint = new Paint(); textPaint.setARGB(200, 254, 0, 0); textPaint.setTextAlign(Align.CENTER); textPaint.setTypeface(font); textPaint.setTextSize(300); canvas.drawText("Hello", canvas.getWidth()/2, canvas.getHeight()/2 , textPaint); }

8
วิธีที่ดีที่สุดในการเพิ่มกิจกรรมลงในโครงการ Android ใน Eclipse?
เมื่อเพิ่มกิจกรรมไปยังโครงการ Android ที่มีอยู่ฉันสร้างคลาสใหม่ด้วยตนเอง - นั่นเป็นวิธีที่ดีที่สุด / เป็นที่ต้องการใช่ไหม คนอื่นจัดการอย่างไร


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