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

แฟรกเมนต์เป็นตัวแทนพฤติกรรมที่สามารถใช้ซ้ำได้หรือส่วนต่าง ๆ ของส่วนต่อประสานผู้ใช้ในแอพ Android

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คืออะไร? หวังว่าใครบางคนที่มีความเข้าใจที่ชัดเจนสามารถให้ความกระจ่างแก่ฉันได้บ้างเพราะฉันเชื่อ …

13
วิธีใช้ data-binding กับ Fragment
ฉันกำลังพยายามติดตามตัวอย่างการผูกข้อมูลจาก google doc อย่างเป็นทางการhttps://developer.android.com/tools/data-binding/guide.html ยกเว้นว่าฉันกำลังพยายามนำข้อมูลไปใช้กับการแยกส่วนไม่ใช่กิจกรรม ข้อผิดพลาดที่ฉันได้รับเมื่อรวบรวมคือ Error:(37, 27) No resource type specified (at 'text' with value '@{marsdata.martianSols}. onCreate สำหรับแฟรกเมนต์มีลักษณะดังนี้: @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MartianDataBinding binding = MartianDataBinding.inflate(getActivity().getLayoutInflater()); binding.setMarsdata(this); } onCreateView สำหรับแฟรกเมนต์มีลักษณะดังนี้: @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.martian_data, …

18
ฉันจะทำให้ WRAP_CONTENT ทำงานบน RecyclerView ได้อย่างไร
ฉันมีDialogFragmentที่มีRecyclerView(รายการการ์ด) ภายในนี้RecyclerViewมีหนึ่งหรือมากกว่าCardViewsนั้นที่สามารถมีความสูงใด ๆ ฉันต้องการให้DialogFragmentความสูงที่ถูกต้องตามCardViewsที่มีอยู่ภายใน ปกตินี้จะง่ายผมจะตั้งwrap_contentบนRecyclerViewเช่นนี้ <android.support.v7.widget.RecyclerView ... xmlns:tools="http://schemas.android.com/tools" android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:scrollbars="vertical" > </android.support.v7.widget.RecyclerView> เพราะฉันใช้สิ่งRecyclerViewนี้ไม่ทำงานดู: https://issuetracker.google.com/issues/37001674 และ ความสูงของมุมมอง Recycler ที่ซ้อนกันไม่ได้ห่อเนื้อหา ในหน้าเหล่านี้ทั้งสองคนแนะนำให้ขยายLinearLayoutManagerและแทนที่onMeasure() ฉันแรกใช้LayoutManagerที่มีคนให้ในลิงค์แรก: public static class WrappingLayoutManager extends LinearLayoutManager { public WrappingLayoutManager(Context context) { super(context); } private int[] mMeasuredDimension = new int[2]; @Override public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int …

12
สลับระหว่างอิมเมจลิ้นชักการนำทาง Android และ Caret เมื่อใช้แฟรกเมนต์
เมื่อใช้ Navigation Drawer ผู้พัฒนา Android จะแนะนำให้ใช้ใน ActionBar "เฉพาะหน้าจอที่แสดงใน Navigation Drawer เท่านั้นที่ควรมีภาพ Navigation Drawer" และ "หน้าจออื่น ๆ ทั้งหมดมีกะรัตดั้งเดิม" ดูที่นี่สำหรับรายละเอียด: http://youtu.be/F5COhlbpIbY ฉันใช้กิจกรรมเดียวเพื่อควบคุมเศษชิ้นส่วนหลายระดับและสามารถใช้อิมเมจลิ้นชักนำทางเพื่อแสดงและใช้งานได้ในทุกระดับ เมื่อสร้างชิ้นส่วนระดับต่ำกว่าฉันสามารถเรียกใช้ActionBarDrawerToggle setDrawerIndicatorEnabled(false)เพื่อซ่อนภาพลิ้นชักการนำทางและแสดงคาเร็ตขึ้น LowerLevelFragment lowFrag = new LowerLevelFragment(); //disable the toggle menu and show up carat theDrawerToggle.setDrawerIndicatorEnabled(false); getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout, lowFrag, "lowerFrag").addToBackStack(null).commit(); ปัญหาที่ฉันมีคือเมื่อฉันนำทางกลับไปที่ชิ้นส่วนระดับบนสุดขึ้นกะรัตยังคงแสดงแทนภาพลิ้นชักการนำทางเดิม คำแนะนำใด ๆ เกี่ยวกับวิธี "รีเฟรช" ActionBar ในแฟรกเมนต์ระดับบนสุดเพื่อแสดงอิมเมจลิ้นชักการนำทางอีกครั้ง? สารละลาย ข้อเสนอแนะของทอมทำงานให้ฉัน นี่คือสิ่งที่ฉันทำ: กิจกรรมหลัก …

13
การส่งผ่านข้อมูลระหว่างแฟรกเมนต์และกิจกรรมคอนเทนเนอร์
ฉันจะส่งผ่านข้อมูลระหว่างส่วนและกิจกรรมภาชนะได้อย่างไร มีบางสิ่งที่คล้ายคลึงกับการส่งผ่านข้อมูลระหว่างกิจกรรมผ่านจุดประสงค์หรือไม่ ฉันอ่านสิ่งนี้แล้ว แต่ก็ไม่ได้ช่วยอะไรมาก: http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity


16
รับวัตถุชิ้นส่วนปัจจุบัน
ในตัวmain.xmlฉันมี <FrameLayout android:id="@+id/frameTitle" android:padding="5dp" android:layout_height="wrap_content" android:layout_width="fill_parent" android:background="@drawable/title_bg"> <fragment android:name="com.fragment.TitleFragment" android:id="@+id/fragmentTag" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </FrameLayout> และฉันกำลังตั้งวัตถุชิ้นส่วนเช่นนี้ FragmentManager fragmentManager = activity.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment newFragment = new FragmentType1(); fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag"); // fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); มันคือการตั้งค่าวัตถุชิ้นส่วนFragmentType2,FragmentType3,...แตกต่างกัน( ) ในเวลาที่แตกต่างกัน ในบางช่วงเวลาฉันต้องระบุวัตถุที่มีอยู่ในขณะนี้ ในระยะสั้นฉันต้องทำอะไรเช่นนี้ Fragment currentFragment = //what is the way to get current fragment …

6
เหตุใดฉันจึงต้องการหลีกเลี่ยงสิ่งก่อสร้างที่ไม่ใช่ค่าเริ่มต้นในเศษ
ฉันกำลังสร้างแอพด้วยFragmentsและในหนึ่งในนั้นฉันสร้างคอนสตรัคเตอร์ที่ไม่ใช่ค่าเริ่มต้นและได้รับคำเตือนนี้: Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead มีใครบอกฉันได้ไหมว่าทำไมนี่จึงไม่ใช่ความคิดที่ดี คุณยังสามารถแนะนำว่าฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไร: public static class MenuFragment extends ListFragment { public ListView listView1; Categories category; //this is my "non-default" constructor public MenuFragment(Categories category){ this.category = category; }.... หากไม่ใช้ตัวสร้างที่ไม่ใช่ค่าเริ่มต้น

26
วิธีการตั้งค่าความกว้างและความสูงของ DialogFragment
ฉันระบุรูปแบบของ DialogFragment ของฉันในไฟล์รูปแบบ XML (ขอเรียกว่าlayout_mydialogfragment.xml) และlayout_widthและlayout_heightคุณลักษณะเฉพาะอย่างยิ่ง (จะ100dpแต่ละสมมติ) ฉันขยายรูปแบบนี้ในonCreateView(...)วิธีการDialogFragment ของฉันดังนี้ View view = inflater.inflate(R.layout.layout_mydialogfragment, container, false); น่าเสียดายที่ฉันพบว่าเมื่อไดอะล็อกของฉัน (DialogFragment) ปรากฏขึ้นจะไม่เคารพlayout_widthและlayout_heightระบุในไฟล์เลย์เอาต์ xml (และไดอะล็อกของฉันจะย่อเล็กลงหรือขยายได้ขึ้นอยู่กับเนื้อหา) ใครรู้หรือไม่ว่าฉันจะได้รับกล่องโต้ตอบของฉันที่จะเคารพlayout_widthและlayout_heightระบุไว้ในไฟล์รูปแบบของ XML? ในขณะนี้ฉันต้องระบุความกว้างและความสูงของกล่องโต้ตอบอีกครั้งในonResume()วิธีการDialogFragment ของฉันดังนี้ ... getDialog().getWindow().setLayout(width, height); ... และด้วยเหตุนี้เราจึงจำไม่ได้ว่าต้องเปลี่ยนแปลงความกว้างและความสูงของกล่องโต้ตอบในอนาคตทั้งสองแห่ง

5
FragmentPagerAdapter มีอยู่เฉพาะใน Android.Support.V4.App (ไม่ใช่ Android.App)
ฉันไม่พบ find FragmentPagerAdapter ภายใน Android.App ฉันไม่ต้องการใช้ Fragment จาก Android.Support.V4.App เนื่องจาก API เป้าหมายของฉันคือ 14 และสูงกว่า (Android 4.0 ขึ้นไป) ดังนั้นฉันต้องการเพียงแค่ใช้ธรรมดาของ Android.App.Fragments และมีชั้นเรียนที่เกี่ยวข้อง ฉันพบเฉพาะภายใน Android.Support.V4.App แต่นี่ไม่พอสำหรับฉัน b / c ฉันพยายามใช้ Android.App.Fragment's (ไม่ใช่ Android.Support.V4.App.Fragment's) และมี คลาสที่เกี่ยวข้องภายใน Android.App (ไม่ใช่ Android.Support.V4.App) และรหัสของฉันจะไม่รวบรวมถ้าฉันได้รับเพจเจอร์ของฉันจาก FragmentPagerAdapter ถ้ามันมาจากห้องสมุดการสนับสนุนเพราะประเภทไม่ตรงกันระหว่าง Android.App และ Android.Support .V4.App เช่นเดียวกับกรณีที่นี่ไม่สามารถส่งไปยัง android.app.Fragmentมีคลาส pager (PagerAdapter) "ปกติ" ที่ฉันควรใช้แทน FragmentPagerAdapter หรือบางอย่าง …

5
วิธีการตั้งชื่อของ DialogFragment?
นี้ควรจะเป็นงานที่ง่าย แต่ด้วยเหตุผลบางอย่างที่ฉันสามารถหาวิธีการตั้งชื่อของที่DialogFragment (ฉันกำลังตั้งค่าเนื้อหาโต้ตอบโดยใช้onCreateViewเกินพิกัด) สไตล์เริ่มต้นออกจากตำแหน่งสำหรับชื่อเรื่อง แต่ฉันไม่พบวิธีการใด ๆ ในDialogFragmentชั้นเรียนเพื่อตั้งค่า มีการตั้งชื่ออย่างน่าอัศจรรย์เมื่อใช้onCreateDialogวิธีการตั้งเนื้อหาดังนั้นฉันสงสัยว่านี่คือโดยการออกแบบหรือมีเคล็ดลับพิเศษเพื่อตั้งเมื่อใช้onCreateViewเกินพิกัด

30
เกิดข้อผิดพลาดในการขยายแฟรกเมนต์ของคลาส
ฉันได้รับข้อผิดพลาด Unable to start activity ComponentInfo{de.androidbuch.activiti/de.androidbuch.activiti.task.Activity}: android.view.InflateException: Binary XML file line #11: Error inflating class fragment เมื่อฉันสลับผ่านแนวตั้งและโหมดแนวนอน ฉันกำลังใช้ชิ้นส่วน xml ของฉันคือ: <LinearLayout android:id="@+id/mainLayout" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ListView android:id="@+id/android:list" android:layout_height="wrap_content" android:layout_width="fill_parent"/> <fragment android:id="@+id/fragmentDetails" android:layout_height="fill_parent" android:layout_width="fill_parent" class="de.androidbuch.activiti.task.TaskDetailsFragment"/> </LinearLayout> ถ้าฉันสลับผ่านโหมดแนวนอนและแนวตั้งทุกอย่างทำงานได้ดี แต่เมื่อฉันคลิกที่แฟรกเมนต์ของฉัน (และฉันสามารถเห็นแฟรกเมนต์ของฉัน) จากนั้นสลับไปที่โหมดอื่นฉันได้รับข้อผิดพลาด ความคิดใดที่ฉันสามารถแก้ไขได้? พบคำตอบที่นี่ แต่ไม่มีคำตอบใด ๆ ที่ช่วยฉัน ... 06-21 14:55:05.600: ERROR/AndroidRuntime(7636): FATAL …

12
ค้นหา Android ด้วย Fragments
มีใครรู้เกี่ยวกับการสอนหรือตัวอย่างของวิธีการใช้อินเตอร์เฟซการค้นหา Androidมาตรฐานด้วยFragments หรือไม่? กล่าวอีกนัยหนึ่งเป็นไปได้หรือไม่ที่จะทำการค้นหาแบบมาตรฐานด้วยSearchManagerการแยกส่วน?

13
ฉันจะรักษาสถานะแฟรกเมนต์ได้อย่างไรเมื่อเพิ่มไปยังสแต็กหลัง?
ฉันเขียนกิจกรรมจำลองที่สลับระหว่างสองชิ้น เมื่อคุณไปจาก FragmentA ถึง FragmentB FragmentA จะถูกเพิ่มเข้าไปในกองหลัง อย่างไรก็ตามเมื่อฉันกลับไปที่ FragmentA (โดยกดปุ่มย้อนกลับ) FragmentA ใหม่ทั้งหมดจะถูกสร้างขึ้นและสถานะจะหายไป ฉันรู้สึกว่าฉันอยู่หลังสิ่งเดียวกันกับคำถามนี้แต่ฉันได้รวมตัวอย่างโค้ดที่สมบูรณ์เพื่อช่วยขจัดปัญหา: public class FooActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentA()); transaction.commit(); } public void nextFragment() { final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentB()); transaction.addToBackStack(null); transaction.commit(); …

4
อะไรคือความแตกต่างระหว่าง Fragment และ FragmentActivity?
คำถามของฉันคือนอกเหนือจากความแตกต่างที่เห็นได้ชัดมรดกสิ่งที่เป็นความแตกต่างที่สำคัญระหว่างFragmentและFragmentActivity? แต่ละสถานการณ์เหมาะสมกับสถานการณ์ใดที่สุด ฉันพยายามเข้าใจว่าทำไมทั้งสองคลาสนี้ถึงมีอยู่ ...

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