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

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

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

14
ล้างสแต็กกลับโดยใช้แฟรกเมนต์
ฉันย้ายแอพ Android ของฉันไปที่รังผึ้งและฉันได้ทำการปรับเปลี่ยนครั้งใหญ่เพื่อใช้ชิ้นส่วน ในรุ่นก่อนหน้าของฉันเมื่อฉันกดปุ่มโฮมฉันเคยทำACTIVITY_CLEAR_TOPเพื่อรีเซ็ตกองหลัง ตอนนี้แอพของฉันเป็นเพียงกิจกรรมเดียวที่มีหลายแฟรกเมนต์ดังนั้นเมื่อฉันกดปุ่มโฮมฉันเพิ่งแทนที่หนึ่งในแฟรกเมนต์ที่อยู่ภายใน ฉันจะล้าง back stack ของฉันโดยไม่ต้องใช้startActivityกับACTIVITY_CLEAR_TOPค่าสถานะได้อย่างไร

7
Android DialogFragment เทียบกับ Dialog
Google ขอแนะนำให้เราใช้DialogFragmentแทนการที่เรียบง่ายDialogโดยใช้Fragments APIแต่มันเป็นเรื่องเหลวไหลที่จะใช้แยกDialogFragmentหาง่ายใช่ไม่มีกล่องข้อความยืนยัน แนวปฏิบัติที่ดีที่สุดในกรณีนี้คืออะไร?

7
ฉันจะเพิ่ม Fragment ให้กับกิจกรรมด้วยมุมมองเนื้อหาที่สร้างโดยทางโปรแกรมได้อย่างไร
ฉันต้องการเพิ่ม Fragment ให้กับกิจกรรมที่ใช้เลย์เอาต์ของมันแบบเป็นโปรแกรม ฉันดูเอกสารชิ้นส่วน แต่ไม่มีตัวอย่างมากมายที่อธิบายถึงสิ่งที่ฉันต้องการ นี่คือประเภทของรหัสที่ฉันพยายามเขียน: public class DebugExampleTwo extends Activity { private ExampleTwoFragment mFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout frame = new FrameLayout(this); if (savedInstanceState == null) { mFragment = new ExampleTwoFragment(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.add(frame.getId(), mFragment).commit(); } setContentView(frame); } } ... public class ExampleTwoFragment …

12
รับผลลัพธ์จาก DialogFragment
ฉันใช้DialogFragmentsสำหรับสิ่งต่าง ๆ : เลือกรายการจากรายการป้อนข้อความ วิธีที่ดีที่สุดในการคืนค่า (เช่นสตริงหรือรายการจากรายการ) กลับไปที่กิจกรรม / ส่วนที่เรียกคืออะไร? ขณะนี้ฉันกำลังทำให้กิจกรรมการโทรดำเนินการDismissListenerและให้ DialogFragment อ้างอิงกับกิจกรรม ไดอะล็อกจะเรียกOnDimissเมธอดในกิจกรรมและกิจกรรมจะคว้าผลลัพธ์จากวัตถุ DialogFragment ยุ่งมากและไม่ทำงานกับการเปลี่ยนแปลงการกำหนดค่า (เปลี่ยนการวางแนว) เนื่องจาก DialogFragment สูญเสียการอ้างอิงไปยังกิจกรรม ขอบคุณสำหรับความช่วยเหลือ

2
ความแตกต่างระหว่าง Activity และ FragmentActivity
ฉันกำลังทำงานกับชิ้นส่วนและเจอสองสิ่งActivityและFragmentActivityมีการใช้หลายครั้ง ฉันต้องการทราบว่ามีความแตกต่างระหว่างสองสิ่งนี้เพราะเมื่อฉันเปลี่ยนActivityด้วยFragmentActivityจะไม่มีผลกับแอป

11
โปรแกรมย้อนกลับไปที่แฟรกเมนต์ก่อนหน้านี้ในแบ็คสแต็ค
ว่าฉันมีกิจกรรมที่มีส่วนเพิ่มทางโปรแกรม: private void animateToFragment(Fragment newFragment, String tag) { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.fragment_container, newFragment, tag); ft.addToBackStack(null); ft.commit(); } วิธีที่ดีที่สุดในการกลับไปยังส่วนก่อนหน้านี้ที่มองเห็นคืออะไร? ฉันพบฟังก์ชันการทำงานของปุ่มย้อนกลับบนปุ่มคลิกใน Androidแต่ฉันคิดว่าการจำลองเหตุการณ์ปุ่มย้อนกลับไม่ใช่วิธีที่เหมาะสมในการดำเนินการ (และฉันไม่สามารถทำให้มันทำงานได้): dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); การโทรfinish()เพิ่งปิดกิจกรรมที่ฉันไม่สนใจ มีวิธีที่ดีกว่าที่จะไปเกี่ยวกับเรื่องนี้?

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. …

18
Fragment onResume () & onPause () ไม่ได้ถูกเรียกบน backstack
ฉันมีหลายส่วนในกิจกรรม บนปุ่มคลิกฉันกำลังเริ่มแฟรกเมนต์ใหม่เพิ่มลงในแบ็คสแต็ค ฉันคาดว่าจะมีonPause()วิธีการเรียกแฟรกเมนต์ปัจจุบันและonResume()แฟรกเมนต์ใหม่ที่เกิดขึ้นตามธรรมชาติ มันไม่ได้เกิดขึ้น LoginFragment.java public class LoginFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.login_fragment, container, false); final FragmentManager mFragmentmanager = getFragmentManager(); Button btnHome = (Button)view.findViewById(R.id.home_btn); btnHome.setOnClickListener(new View.OnClickListener() { public void onClick(View view){ HomeFragment fragment = new HomeFragment(); FragmentTransaction ft2 …

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(); ต้องเป็นสิ่งที่ฉันทำผิดมาก แต่ฉันไม่รู้ว่ามันคืออะไร

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 …

5
มีกิจกรรม vs เศษกี่ชิ้น
บทนำ: รูปแบบ "การสอน Fragments" พื้นฐานมีลักษณะดังนี้: บนแท็บเล็ตมีรายการทางด้านซ้ายรายละเอียดด้านขวา ทั้งสอง และอาศัยทั้งในแบบเดียวกันFragmentsActivity บนโทรศัพท์มือถือที่มีรายชื่อในหนึ่งFragmentActivity เปิดตัวใหม่มีรายละเอียดActivityFragment (เช่นAndroid 3.0 Fragments API โดย Dianne Hackbornและคู่มือFragments API ) Fragmentsในอุปกรณ์ทั้งสองทำงานอยู่ใน (แบบง่าย) บนแท็บเล็ตแอปทั้งหมดเป็น1Activityในโทรศัพท์มีจำนวนมากActivities คำถาม: มีเหตุผลที่จะแยกแอพโทรศัพท์ออกเป็นจำนวนมากActivitiesหรือไม่? หนึ่งปัญหาด้วยวิธีนี้คือการที่คุณซ้ำกันจำนวนมากของลอจิกในแท็บเล็ตหลักและในโทรศัพท์ที่แยกต่างหากActivityActivities จะง่ายกว่าไหมถ้าจะคงรูปแบบ 1 กิจกรรมไว้ในทั้งสองกรณีโดยใช้ตรรกะเดียวกันในการสลับFragmentsเข้าและออก (ใช้รูปแบบที่แตกต่างกัน) วิธีนี้ตรรกะส่วนใหญ่อยู่ในFragmentsตัวของมันเองและมีการActivityทำสำเนารหัสเพียงครั้งเดียวน้อยลง สิ่งที่ฉันได้อ่านเกี่ยวกับสิ่งActionBarSherlockที่ดูเหมือนว่าจะทำงานได้ดีที่สุดด้วยFragmentsแทนที่จะเป็นActivities(แต่ฉันยังไม่ได้ทำงานด้วย) แบบฝึกหัดเกินความจริงหรือฉันพลาดสิ่งสำคัญในแนวทางนี้หรือไม่? เราได้ลองทั้งสองวิธีในสำนักงานเรียบร้อยแล้ว - แต่ฉันกำลังจะเริ่มโครงการที่ใหญ่กว่าและต้องการทำสิ่งต่าง ๆ ให้ง่ายที่สุดสำหรับตัวเอง ลิงก์ไปยังคำถามที่เกี่ยวข้อง: Dilemma: เมื่อใดควรใช้ Fragments vs Activities: รูปแบบเวลาที่จะใช้ Activity Transition กับ Dynamic Fragments Android …

5
onCreateOptionsMenu ภายในแฟรกเมนต์
ฉันได้วางไว้setHasOptionsMenu(true)ข้างในonCreateViewแล้ว แต่ยังไม่สามารถโทรหาonCreateOptionsMenuชิ้นส่วนภายใน @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); return inflater.inflate(R.layout.facesheet, container, false); } ด้านล่างเป็นonCreateOptionsMenuรหัสของฉัน @Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { getSupportMenuInflater().inflate(R.menu.layout, menu); return (super.onCreateOptionsMenu(menu)); } ข้อความแสดงข้อผิดพลาดที่ฉันได้รับ: วิธีการonCreateOptionsMenu(Menu)พิมพ์ส่วนจะต้องแทนที่หรือใช้วิธีการ supertype

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