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

ViewGroup ที่จัดการโครงร่างสำหรับมุมมองย่อยที่ผู้ใช้สามารถปัดระหว่าง

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

30
ViewPager PagerAdapter ไม่อัปเดตมุมมอง
ฉันใช้ ViewPager จากไลบรารีความเข้ากันได้ ฉันประสบความสำเร็จในการแสดงหลายมุมมองซึ่งฉันสามารถเลื่อนดูได้ อย่างไรก็ตามฉันพบปัญหาในการอัปเดต ViewPager ด้วยมุมมองใหม่ ฉันได้ลองทุกอย่างเช่นโทรmAdapter.notifyDataSetChanged()แล้วmViewPager.invalidate()สร้างอะแดปเตอร์ใหม่ทุกครั้งที่ฉันต้องการใช้รายการข้อมูลใหม่ ไม่มีสิ่งใดช่วยได้ textviews ยังคงไม่เปลี่ยนแปลงจากข้อมูลต้นฉบับ อัปเดต: ฉันทำโครงการทดสอบเล็กน้อยและเกือบจะสามารถอัปเดตมุมมองได้ ฉันจะวางชั้นเรียนด้านล่าง สิ่งที่ไม่ปรากฏให้เห็นในการอัพเดตคือมุมมองที่ 2 ซึ่งยังคงอยู่ 'B' ควรจะแสดง 'Y' หลังจากกดปุ่มอัปเดต public class ViewPagerBugActivity extends Activity { private ViewPager myViewPager; private List<String> data; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); data = new ArrayList<String>(); data.add("A"); data.add("B"); data.add("C"); myViewPager = …

24
ปิดการใช้งานเพจจิ้งโดยการปัดด้วยนิ้วใน ViewPager แต่ยังสามารถปัดโปรแกรมได้
ฉันมี ViewPager และด้านล่างฉันมี 10 ปุ่ม เมื่อคลิกที่ปุ่มเช่น # 4 เพจเจอร์จะไปที่หน้า # 4 mPager.setCurrentItem(3);ทันที แต่ฉันต้องการปิดใช้งานการเพจโดยปัดด้วยนิ้วในแนวนอน ดังนั้นเพจจะทำเท่านั้นโดยคลิกที่ปุ่ม ดังนั้นฉันจะปิดการใช้งานการปัดด้วยนิ้วได้อย่างไร

30
IllegalStateException: ไม่สามารถทำการกระทำนี้หลังจาก onSaveInstanceState ด้วย ViewPager
ฉันได้รับรายงานผู้ใช้จากแอพของฉันในตลาดโดยให้ข้อยกเว้นต่อไปนี้: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1109) at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:399) at android.app.Activity.onBackPressed(Activity.java:2066) at android.app.Activity.onKeyUp(Activity.java:2044) at android.view.KeyEvent.dispatch(KeyEvent.java:2529) at android.app.Activity.dispatchKeyEvent(Activity.java:2274) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1855) at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1277) at android.app.Activity.dispatchKeyEvent(Activity.java:2269) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at android.widget.TabHost.dispatchKeyEvent(TabHost.java:297) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112) at …

10
ViewPager และแฟรกเมนต์ - วิธีที่ถูกต้องในการจัดเก็บสถานะของแฟรกเมนต์คืออะไร
แฟรกเมนต์ดูเหมือนจะดีมากสำหรับการแยกตรรกะ UI ออกเป็นโมดูล แต่ตลอดViewPagerจนวงจรชีวิตของมันยังคงเป็นสิ่งที่ผิดสำหรับฉัน ดังนั้นความคิดของปราชญ์จึงเป็นสิ่งจำเป็นอย่างยิ่ง! แก้ไข ดูวิธีแก้ใบ้ด้านล่าง ;-) ขอบเขต กิจกรรมหลักมีViewPagerชิ้นส่วนด้วย แฟรกเมนต์เหล่านั้นสามารถใช้ตรรกะที่แตกต่างกันเล็กน้อยสำหรับกิจกรรมอื่น ๆ (ส่ง) ดังนั้นข้อมูลของแฟรกเมนต์จะถูกกรอกผ่านอินเตอร์เฟสการติดต่อกลับภายในกิจกรรม และทุกอย่างทำงานได้ดีในการเปิดตัวครั้งแรก แต่! ... ปัญหา เมื่อกิจกรรมถูกสร้างขึ้นใหม่ (เช่นการเปลี่ยนการวางแนว) ให้ทำViewPagerเศษของ รหัส (คุณจะพบด้านล่าง) บอกว่าทุกครั้งที่มีการสร้างกิจกรรมฉันพยายามที่จะสร้างViewPagerอะแดปเตอร์ชิ้นส่วนใหม่เช่นเดียวกับชิ้นส่วน (อาจเป็นปัญหา) แต่ FragmentManager ได้เก็บชิ้นส่วนเหล่านี้ไว้ที่ไหนซักแห่ง (ที่ไหน?) และ เริ่มกลไกการนันทนาการสำหรับผู้ที่ ดังนั้นกลไกการสันทนาการจึงเรียกส่วนของ "เก่า" ของ onAttach, onCreateView ฯลฯ ด้วยการติดต่อกลับของฉันสำหรับการเริ่มต้นข้อมูลผ่านวิธีการดำเนินการของกิจกรรม แต่วิธีนี้ชี้ไปที่ส่วนที่สร้างขึ้นใหม่ซึ่งสร้างขึ้นผ่านวิธีการ onCreate ของกิจกรรม ปัญหา บางทีฉันใช้รูปแบบที่ไม่ถูกต้อง แต่แม้กระทั่งหนังสือ Android 3 Pro ก็ไม่ได้มีอะไรมาก ได้โปรดให้หมัดหนึ่ง - …

7
FragmentPagerAdapter และ FragmentStatePagerAdapter แตกต่างกันอย่างไร
ความแตกต่างระหว่างFragmentPagerAdapterและFragmentStatePagerAdapterคืออะไร? เกี่ยวกับFragmentPagerAdapterคำแนะนำของ Google พูดว่า: เพจเจอร์รุ่นนี้เหมาะที่สุดสำหรับการใช้งานเมื่อมีชิ้นส่วนแบบสแตติกจำนวนหนึ่งที่จะถูกเพจผ่านเช่นกลุ่มแท็บ แฟรกเมนต์ของแต่ละหน้าที่ผู้ใช้เยี่ยมชมจะถูกเก็บไว้ในหน่วยความจำแม้ว่าลำดับชั้นการดูอาจถูกทำลายเมื่อมองไม่เห็น สิ่งนี้สามารถส่งผลในการใช้หน่วยความจำจำนวนมากเนื่องจากอินสแตนซ์ของแฟรกเมนต์สามารถคงอยู่ในสถานะที่กำหนดเองได้ FragmentStatePagerAdapterสำหรับชุดขนาดใหญ่ของหน้าพิจารณา และเกี่ยวกับFragmentStatePagerAdapter: เพจเจอร์รุ่นนี้มีประโยชน์มากกว่าเมื่อมีเพจจำนวนมากทำงานได้คล้ายกับมุมมองรายการ เมื่อผู้ใช้ไม่สามารถมองเห็นหน้าส่วนของพวกเขาทั้งหมดอาจถูกทำลายเพียงรักษาสถานะที่บันทึกของส่วนที่ สิ่งนี้ทำให้เพจเจอร์เก็บหน่วยความจำน้อยลงที่เกี่ยวข้องกับเพจที่เยี่ยมชมแต่ละเพจเมื่อเปรียบเทียบกับ FragmentPagerAdapterค่าใช้จ่ายที่อาจมีค่าใช้จ่ายมากกว่าเมื่อสลับระหว่างเพจ ดังนั้นฉันมีเพียง 3 ชิ้น แต่ทั้งหมดเป็นโมดูลแยกต่างหากที่มีข้อมูลจำนวนมาก Fragment1จัดการข้อมูลบางส่วน (ซึ่งผู้ใช้ป้อน) และผ่านทางกิจกรรมเข้าซึ่งเป็นเพียงง่ายๆFragment2 นอกจากนี้ยังมีListFragmentFragment3ListFragment ดังนั้นคำถามของฉันคือ : ฉันควรใช้อะแดปเตอร์ใด FragmentPagerAdapterหรือFragmentStatePagerAdapter?

20
อัปเดต ViewPager แบบไดนามิกหรือไม่
ฉันไม่สามารถอัปเดตเนื้อหาใน ViewPager การใช้วิธีที่ถูกต้องคืออะไร instantiateItem () และ getItem () ในคลาส FragmentPagerAdapter? ฉันใช้ getItem () เพื่อยกตัวอย่างและส่งคืนชิ้นส่วนของฉัน: @Override public Fragment getItem(int position) { return new MyFragment(context, paramters); } มันใช้งานได้ดี ยกเว้นฉันไม่สามารถเปลี่ยนเนื้อหาได้ ดังนั้นฉันจึงพบสิ่งนี้: ViewPager PagerAdapter ไม่อัปเดตมุมมอง "วิธีการของฉันคือใช้เมธอด setTag () สำหรับมุมมองอินสแตนซ์ใด ๆ ในเมธอด instantiateItem ()" ตอนนี้ฉันต้องการใช้ instantiateItem () เพื่อทำเช่นนั้น แต่ฉันไม่รู้ว่าฉันต้องส่งคืนอะไร (ชนิดคือ Object) และความสัมพันธ์กับ getItem (ตำแหน่ง int) …

18
แทนที่ส่วนใน ViewPager
ฉันพยายามที่จะใช้ส่วนที่มีการใช้ViewPager FragmentPagerAdapterสิ่งที่ฉันกำลังมองหาที่จะบรรลุคือการแทนที่ส่วนที่อยู่ในหน้าแรกของViewPagerด้วยอีกอันหนึ่ง เพจเจอร์ประกอบด้วยสองหน้า คนแรกเป็นที่หนึ่งที่สองคือFirstPagerFragment SecondPagerFragmentคลิกที่ปุ่มหน้าแรก ฉันต้องการแทนที่FirstPagerFragmentด้วย NextFragment มีรหัสของฉันด้านล่าง public class FragmentPagerActivity extends FragmentActivity { static final int NUM_ITEMS = 2; MyAdapter mAdapter; ViewPager mPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_pager); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mAdapter); } /** * Pager Adapter */ public static class …


23
ดึงชิ้นส่วนจาก ViewPager
ฉันใช้ViewPagerพร้อมกับ a FragmentStatePagerAdapterเพื่อโฮสต์แฟรกเมนต์ที่แตกต่างกันสามรายการ [Fragment1] [Fragment2] [Fragment3] เมื่อฉันต้องการที่จะได้รับFragment1จากในViewPagerFragmentActivity ปัญหาคืออะไรและฉันจะแก้ไขได้อย่างไร


30
รับอินสแตนซ์ Fragment ปัจจุบันใน viewpager
ด้านล่างนี้คือรหัสของฉันซึ่งได้3 Fragment classesฝังตัวแต่ละคนมีแต่ละ 3 ViewPagerแท็บ ฉันมีตัวเลือกเมนู ดังที่แสดงในการonOptionsItemSelected()โดยการเลือกตัวเลือกฉันจำเป็นต้องอัปเดตส่วนที่มองเห็นได้ในปัจจุบัน เพื่ออัปเดตที่ฉันต้องเรียกวิธีการที่อยู่ในชั้นส่วน ใครช่วยได้โปรดแนะนำวิธีการโทรด้วยวิธีนั้นได้ไหม public class MainActivity extends ActionBarActivity { ViewPager ViewPager; TabsAdapter TabsAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ViewPager = new ViewPager(this); ViewPager.setId(R.id.pager); setContentView(ViewPager); final ActionBar bar = getSupportActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //Attaching the Tabs to the fragment classes and setting the tab title. …

6
วิธีใช้ ViewPager ที่มี Fragments / Layouts ต่างกัน
เมื่อฉันเริ่มกิจกรรมที่ใช้ viewpager ผู้ดูจะสร้างแฟรกเมนต์ต่างๆ ฉันต้องการใช้เลย์เอาต์ที่แตกต่างกันสำหรับแต่ละแฟรกเมนต์ แต่ปัญหาคือ viewpager แสดงเพียงสองเลย์เอาท์ที่สูงสุด (เลย์เอาต์ที่สองของแฟรกเมนต์ที่เหลือทั้งหมดหลังจาก 1) นี่คือรหัสสำหรับSwipeActivityซึ่งใช้ viewpager: public class SwipeActivity extends FragmentActivity { MyPageAdapter pageAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_swipe); pageAdapter = new MyPageAdapter(getSupportFragmentManager()); ViewPager pager=(ViewPager)findViewById(R.id.pager); pager.setAdapter(pageAdapter); ActionBar bar = getActionBar(); bar.setDisplayHomeAsUpEnabled(true); } /** * Custom Page adapter */ private class MyPageAdapter extends …


3
Android.app Fragments เทียบกับ android.support.v4.app โดยใช้ ViewPager?
ฉันมีคำถามเกี่ยวกับไลบรารีการสนับสนุน Android ชิ้นส่วนและเป็นตัวอย่างเฉพาะViewPagerชั้นเรียน ความตั้งใจของฉันคือการสร้างแอปที่มีฟังก์ชั่นการทำงานคล้ายกับตัวอย่างที่มีให้ในเว็บไซต์ของนักพัฒนา Android ( http://developer.android.com/training/animation/screen-slide.htmlหรือhttp://developer.android.com/) training / Implement-navigation / lateral.html ) เมื่อมองดูรหัสของพวกเขาฉันสังเกตเห็นว่าพวกเขาใช้android.support.v4.appห้องสมุดซึ่งจากการวิจัยของฉันเป็นวิธีเดียวในการเข้าถึงViewPagerชั้นเรียน ในสถานการณ์ของฉันฉันไม่สนใจความเข้ากันได้แบบย้อนหลัง ระดับ API ขั้นต่ำคือ 14 (Ice Cream Sandwich) และเป้าหมายการสร้างคือ 4.2 Jelly Bean ในรูปแบบที่ง่ายที่สุดแอปของฉันทำงานได้ดีเหมือนกับการสาธิตครั้งที่สองที่ฉันเชื่อมโยงกับเว็บไซต์ Android dev เพียงแค่รูดระหว่างแท็บสามแท็บที่มีเนื้อหาในแต่ละรายการ บทความ / โพสต์ / คำตอบทั้งหมดที่ฉันได้อ่านดูเหมือนจะสนับสนุนไลบรารี v4 อย่างมาก ทีนี้สำหรับฉันแล้วคำถามยืดยาว: วิธีที่ดีที่สุดในการจัดโครงสร้างแอปพลิเคชันของฉันคือการใช้android.support.v4.appและด้วยการใช้ SupportFragments หรือใช้แฟรกเมนต์ที่มีให้ในandroid.app- และเพราะเหตุใด หากเศษชิ้นส่วนจากandroid.appทางไปเป็นวิธีการที่เหมาะสมที่สุดในการเข้าใกล้ViewPagersคืออะไร? หาก SupportFragments เหมาะสมที่สุดกับงานฉันจะประเมินว่าพวกเขามีฟังก์ชั่นการทำงานเหมือนกับที่อื่น ๆ - ดังนั้นวัตถุประสงค์ของการมีพวกเขาอยู่ข้างในandroid.appคืออะไร? หวังว่าใครบางคนที่มีความเข้าใจที่ชัดเจนสามารถให้ความกระจ่างแก่ฉันได้บ้างเพราะฉันเชื่อ …

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