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

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

17
Android 4.2: พฤติกรรมแบ็คสแต็กที่มีส่วนที่ซ้อนกัน
พร้อมกับ Android 4.2 สนับสนุนห้องสมุดสนับสนุนได้สำหรับชิ้นส่วนที่ซ้อนกันดูที่นี่ ผมเคยเล่นรอบกับมันและพบพฤติกรรมที่น่าสนใจ / ข้อผิดพลาดเกี่ยวกับสแต็คกลับมาและgetChildFragmentManager () เมื่อใช้ getChildFragmentManager () และ addToBackStack (ชื่อสตริง) โดยการกดปุ่มย้อนกลับระบบจะไม่เรียกใช้ back stack ไปยังส่วนก่อนหน้า ในทางกลับกันเมื่อใช้getFragmentManager ()และ addToBackStack (ชื่อสตริง) โดยการกดปุ่มย้อนกลับระบบจะกลับไปที่แฟรกเมนต์ก่อนหน้า สำหรับฉันพฤติกรรมนี้เป็นเรื่องที่ไม่คาดคิด การกดปุ่มย้อนกลับบนอุปกรณ์ของฉันฉันคาดหวังว่าส่วนที่เพิ่มล่าสุดในสแต็กด้านหลังจะถูกเปิดแม้ว่าส่วนย่อยจะถูกเพิ่มลงในสแต็กด้านหลังในตัวจัดการส่วนย่อยของเด็ก พฤติกรรมนี้ถูกต้องหรือไม่? พฤติกรรมนี้เป็นจุดบกพร่องหรือไม่? มีวิธีแก้ไขปัญหานี้หรือไม่? โค้ดตัวอย่างด้วย getChildFragmentManager (): public class FragmentceptionActivity extends FragmentActivity { @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); final FrameLayout wrapper1 = new FrameLayout(this); …

10
วิธีรับ Toolbar จากแฟรกเมนต์
ฉันต้องActionBarActivityมีNavigationDrawerและการใช้ support_v7 Toolbarเป็น ActionBar ในแถบเครื่องมือเศษชิ้นส่วนของฉันมีมุมมองที่กำหนดเอง ในส่วนอื่น ๆToolbarควรแสดงชื่อเรื่อง วิธีรับToolbarอินสแตนซ์สำหรับการปรับแต่งจากชิ้นส่วน? ฉันสามารถรับ ActionBar ได้getActivity().getActionBar()แต่ถ้าฉันเรียกsetTitle()อินสแตนซ์นี้ว่า ActionBar จะไม่ทำอะไรเลย UPD: ในกรณีของฉัน ((ActionBarActivity) getActivity()).getSupportActionBar().setTitle(); (ตามที่ MrEngineer13 กล่าว) ไม่ทำงานในการสร้างส่วนแรกเพราะฉันเรียกมันจาก onHiddenChanged () ตอนนี้ฉันเพิ่มอีกหนึ่งรายการใน onCreateView () และใช้งานได้ดี

7
OnCreateOptionsMenu () ไม่ถูกเรียกใน Fragment
ฉันมีแอพที่มีกิจกรรมหนึ่งโดยมี 2 ส่วนวางในแนวนอน ในกิจกรรมของฉันฉันขยายเมนูโดยonCreateOptionsMenu()ใช้ซึ่งฉันสามารถแสดงเมนูตัวเลือกแถบการทำงานได้ แต่เมื่อฉันพยายามอัปเดตรายการเมนูแถบการดำเนินการจากส่วนหนึ่งของฉันonCreateoptionsmenu()จะไม่มีการเรียกใช้ ดังนั้นฉันจึงไม่สามารถอัปเดตเมนูตัวเลือกแถบการทำงานได้ รหัสในกิจกรรมของฉันมีดังต่อไปนี้: myActivity.java package com.andr.androidtablelist; import java.io.IOException; import android.app.ActionBar; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import com.andr.fragments.ListLeftFragment; import com.andr.utils.DBHelper; public class TabletActivity extends Activity { ActionBar actionBar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DBHelper dbhelper; dbhelper …

17
รับชิ้นส่วนล่าสุดใน backstack
ฉันจะเพิ่มอินสแตนซ์แฟรกเมนต์ล่าสุดในแบ็คสแต็กได้อย่างไร (หากฉันไม่รู้จักแฟรกเมนต์แท็ก & id) FragmentManager fragManager = activity.getSupportFragmentManager(); FragmentTransaction fragTransacion = fragMgr.beginTransaction(); /****After add , replace fragments (some of the fragments are add to backstack , some are not)***/ //HERE, How can I get the latest added fragment from backstack ??

16
ส่วนย่อยไม่ได้ถูกแทนที่ แต่วางไว้ด้านบนของชิ้นส่วนก่อนหน้า
กิจกรรม: FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); Fragment1 fragment = new Fragment1(); Fragment2 fragment2 = new Fragment2(); transaction.replace(R.id.Fragment1, fragment); transaction.addToBackStack(null); transaction.commit(); FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction(); transaction2.replace(R.id.Fragment1, fragment2); transaction2.addToBackStack(null); transaction2.commit(); รหัสในมุมมอง: <fragment android:id="@+id/Fragment1" android:name="com.landa.fragment.Fragment1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_below="@+id/include1" /> ปัญหาคือเนื้อหาไม่ได้ถูกแทนที่จริงๆ - มันถูกวางไว้ด้านบน (มันจึงทับซ้อนกัน) เมื่อฉันคลิกย้อนกลับส่วนแรกจะแสดงอย่างถูกต้อง (โดยไม่มีส่วนที่สอง) แต่ในตอนแรกทั้งสองจะมองเห็นได้ (ฉันต้องการให้มองเห็นเฉพาะชิ้นสุดท้ายเท่านั้น) ฉันขาดอะไรไปที่นี่?

5
ภาพเคลื่อนไหวการทำธุรกรรมส่วนย่อย: เลื่อนเข้าและเลื่อนออก
ฉันได้ตรวจสอบบทช่วยสอนสำหรับการทำธุรกรรมที่เคลื่อนไหวระหว่างส่วนต่างๆ ฉันใช้วิธีนี้ในการเคลื่อนไหวและได้ผล: fragmentTransaction.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right); แต่ฉันต้องการกลับภาพเคลื่อนไหวนี้: ส่วนเก่าเลื่อนออกไปทางซ้ายและส่วนใหม่เลื่อนไปทางขวา แต่ไม่มีค่าของ R.animดูเหมือนว่าไฟล์ที่จะเป็นประโยชน์สำหรับขอบเขตของฉัน ฉันจะทำมันได้อย่างไร?

6
getSupportActionBar จากด้านในของ Fragment ActionBarCompat
ฉันเริ่มโครงการใหม่ที่ใช้AppCompat/ActionBarCompatในการv7สนับสนุนห้องสมุด ฉันกำลังพยายามหาวิธีใช้getSupportActionBarจากภายในส่วน กิจกรรมของฉันที่โฮสต์แฟรกเมนต์ขยายออกไปActionBarActivityแต่ฉันไม่เห็นคลาสการสนับสนุนที่คล้ายกันสำหรับ Fragments จากภายในส่วนของฉัน public class CrimeFragment extends Fragment { //... getActivity().getSupportActionBar().setSubtitle(R.string.subtitle); // getSupportActionBar is not defined in the v4 version of Fragment //... } หน้า Google สำหรับใช้งาน ( http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html ) ระบุว่าไม่ควรมีการเปลี่ยนแปลงสำหรับv4ส่วนย่อย ฉันจำเป็นต้องส่งgetActivity()สายทั้งหมดไปที่ActionBarActivity? ดูเหมือนว่าการออกแบบที่ไม่ดี

6
ประโยชน์ของการใช้ Fragments ใน Android แทนที่จะเป็น Views คืออะไร
เมื่อมีการพัฒนาสำหรับAndroidคุณสามารถตั้งค่าเป้าหมายของคุณ (หรืออย่างน้อย) SDK 4 (API 1.6) และเพิ่มแพคเกจเข้ากันได้ของหุ่นยนต์ (v4) Fragmentsเพื่อเพิ่มการสนับสนุนสำหรับ เมื่อวานนี้ฉันทำสิ่งนี้และนำFragmentsไปใช้เพื่อแสดงภาพข้อมูลจากคลาสที่กำหนดเองได้สำเร็จ คำถามของฉันคือสิ่งนี้มีประโยชน์อย่างไรในการใช้Fragmentsเมื่อเทียบกับเพียงแค่รับ View จากออบเจ็กต์ที่กำหนดเองและยังรองรับ API 1.5 ตัวอย่างเช่นฉันมีคลาส Foo.java: public class Foo extends Fragment { /** Title of the Foo object*/ private String title; /** A description of Foo */ private String message; /** Create a new Foo * @param title * …

10
ไม่สามารถทำให้ DialogFragment แบบกำหนดเองโปร่งใสเหนือ Fragment ได้
ฉันต้องการสร้างไดอะล็อกบนส่วนย่อย (ที่ใช้ทั้งหน้าจอ) กล่องโต้ตอบจะต้องเป็นกล่องโต้ตอบแบบลอยที่จะวางตำแหน่งเหนือส่วนโดยที่ส่วนที่มืดออกมานอกส่วนนั้น .. สำหรับ Dialog ที่กำหนดเองฉันมี LinearLayout ที่มีขอบโค้งไม่ว่าฉันจะทำอะไรกล่องโต้ตอบจะมีขอบสีดำทุกด้าน (เล็กมาก) ฉันพยายามทุกอย่างเพื่อให้โปร่งใสและหายไป (เพื่อให้กล่องโต้ตอบทั้งหมดเป็นเพียงเค้าโครงเชิงเส้น - กล่องโค้ง) สำหรับ DialogFragment นี่คือสิ่งที่ฉันมีสำหรับ onCreateView @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null); LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item); populateItemData(item, inflater); return layout; } custom_dialog เป็นเพียง LinearLayout ที่มี android: backgroung ตั้งค่าเป็น # 000000 นี่คือสไตล์ของฉันสำหรับ …

5
Fragment onCreateView และ onActivityCreated เรียกสองครั้ง
ฉันกำลังพัฒนาแอปโดยใช้ Android 4.0 ICS และแฟรกเมนต์ พิจารณาตัวอย่างที่แก้ไขนี้จากแอปตัวอย่างของ ICS 4.0.3 (API ระดับ 15): public class FragmentTabs extends Activity { private static final String TAG = FragmentTabs.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final ActionBar bar = getActionBar(); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); bar.addTab(bar.newTab() .setText("Simple") .setTabListener(new TabListener<SimpleFragment>( this, "mysimple", SimpleFragment.class))); if (savedInstanceState != null) …

10
แสดงส่วนซ่อนใน Android
ฉันกำลังพัฒนาแอพพลิเคชั่นที่มีชิ้นส่วน 2 ชิ้นและฉันต้องการแสดงการซ่อนตามความต้องการของฉัน รหัสต่อไปนี้มีตัวอย่างง่ายๆของปัญหาของฉัน Fragmentactivity แบบธรรมดานี้ประกอบด้วยปุ่ม 1 ปุ่มและส่วนรายการเดียว ตัวอย่างง่ายๆนี้ทำงานได้อย่างไม่มีที่ติ แต่ฉันไม่พอใจกับการแสดงส่วนซ่อน หากคุณลบ layout.setVisibility (View.GONE); จากรหัสแล้ว ft.hide (f); จะไม่ซ่อนส่วน ในความเป็นจริงเราไม่ได้ซ่อนชิ้นส่วนเรากำลังซ่อนภาชนะ คำถามของฉันคือวิธีนี้เป็นวิธีแสดงชิ้นส่วนซ่อนหรือไม่ หากไม่เป็นเช่นนั้นโปรดอธิบายด้วยตัวอย่างทดสอบวิธีซ่อนและแสดง Fragments เนื่องจากผู้คนจำนวนมากกำลังประสบปัญหานี้ public class MainActivity extends FragmentActivity implements OnClickListener { Fragment1 f; Button b; LinearLayout layout; Fragment myf; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) findViewById(R.id.button1); layout …

18
วิธีสร้างความกว้าง DialogFragment เป็น Fill_Parent
ฉันกำลังทำงานกับแอปพลิเคชัน Android ที่ฉันใช้DialogFragmentเพื่อแสดงกล่องโต้ตอบ แต่ความกว้างของมันมีขนาดเล็กมาก ฉันจะทำให้กว้างขนาดนี้fill_parentได้อย่างไร? public class AddNoteDialogFragment extends DialogFragment { public AddNoteDialogFragment() { // Empty constructor required for DialogFragment } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { getDialog().setTitle(getString(R.string.app_name)); View view = inflater.inflate(R.layout.fragment_add_note_dialog, container); return view; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); …

16
ส่วนที่ซ้อนกันจะหายไปในระหว่างการเปลี่ยนภาพเคลื่อนไหว
นี่คือสถานการณ์: กิจกรรมมีชิ้นส่วนAซึ่งจะใช้getChildFragmentManager()ในการเพิ่มชิ้นส่วนA1และA2ในonCreateลักษณะนี้: getChildFragmentManager() .beginTransaction() .replace(R.id.fragmentOneHolder, new FragmentA1()) .replace(R.id.fragmentTwoHolder, new FragmentA2()) .commit() จนถึงตอนนี้ดีมากทุกอย่างดำเนินไปตามที่คาดไว้ จากนั้นเราจะเรียกใช้ธุรกรรมต่อไปนี้ในกิจกรรม: getSupportFragmentManager() .beginTransaction() .setCustomAnimations(anim1, anim2, anim1, anim2) .replace(R.id.fragmentHolder, new FragmentB()) .addToBackStack(null) .commit() ในระหว่างการเปลี่ยนแปลงที่enterภาพเคลื่อนไหวสำหรับชิ้นส่วนBทำงานได้อย่างถูกต้อง แต่เศษ A1 และ A2 หายไปอย่างสิ้นเชิง เมื่อเราเปลี่ยนกลับธุรกรรมด้วยปุ่มย้อนกลับการทำธุรกรรมจะเริ่มต้นอย่างถูกต้องและแสดงตามปกติในระหว่างการpopEnterเคลื่อนไหว ในการทดสอบสั้น ๆ ของฉันมันแปลกกว่า - ถ้าฉันตั้งค่าภาพเคลื่อนไหวสำหรับชิ้นส่วนย่อย (ดูด้านล่าง) exitภาพเคลื่อนไหวจะทำงานเป็นระยะ ๆ เมื่อเราเพิ่มส่วนB getChildFragmentManager() .beginTransaction() .setCustomAnimations(enter, exit) .replace(R.id.fragmentOneHolder, new FragmentA1()) .replace(R.id.fragmentTwoHolder, new FragmentA2()) …

11
java.lang.IllegalStateException: เด็กที่ระบุมีพาเรนต์อยู่แล้ว
ฉันกำลังใช้ชิ้นส่วนเมื่อฉันสร้างชิ้นส่วนในครั้งแรก แต่ครั้งที่สองฉันได้รับข้อยกเว้นนี้ ฉันไม่พบบรรทัดที่ฉันได้รับข้อผิดพลาด? 04-04 08:51:54.320: E/AndroidRuntime(29713): FATAL EXCEPTION: main 04-04 08:51:54.320: E/AndroidRuntime(29713): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addViewInner(ViewGroup.java:3013) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2902) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2859) 04-04 08:51:54.320: E/AndroidRuntime(29713): at android.view.ViewGroup.addView(ViewGroup.java:2839) 04-04 …

13
วิธีรับชิ้นส่วนที่มีอยู่เมื่อใช้ FragmentPagerAdapter
ฉันมีปัญหาในการทำให้ชิ้นส่วนของฉันสื่อสารกันActivityโดยใช้FragmentPagerAdapterคลาสตัวช่วยซึ่งใช้การจัดการแท็บและรายละเอียดทั้งหมดของการเชื่อมต่อViewPagerกับTabHostไฟล์. ฉันได้ดำเนินการFragmentPagerAdapterเช่นเดียวกับที่เดียวกับที่มันมีให้โดยโครงการ Android ตัวอย่างSupport4Demos คำถามหลักคือฉันจะได้รับชิ้นส่วนเฉพาะจากFragmentManagerเมื่อฉันไม่มีทั้ง Id หรือ Tag ได้อย่างไร FragmentPagerAdapterกำลังสร้างส่วนและสร้างรหัสและแท็กโดยอัตโนมัติ

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