ฉันใช้ ViewPager ความเข้ากันได้ v4 ใน Android My FragmentActivity มีกลุ่มของข้อมูลที่จะแสดงในรูปแบบที่แตกต่างกันในหน้าต่างๆใน ViewPager ของฉัน จนถึงตอนนี้ฉันมี ListFragment เดียวกัน 3 อินสแตนซ์ แต่ในอนาคตฉันจะมี ListFragments 3 อินสแตนซ์ที่ต่างกัน ViewPager อยู่บนหน้าจอโทรศัพท์แนวตั้งรายการไม่ได้อยู่ติดกัน
ตอนนี้ปุ่มบน ListFragment จะเริ่มกิจกรรมเต็มหน้าแยก (ผ่าน FragmentActivity) ซึ่งส่งคืนและ FragmentActivity แก้ไขข้อมูลบันทึกจากนั้นพยายามอัปเดตมุมมองทั้งหมดใน ViewPager ที่นี่ฉันอยู่ตรงไหน
public class ProgressMainActivity extends FragmentActivity
{
MyAdapter mAdapter;
ViewPager mPager;
@Override
public void onCreate(Bundle savedInstanceState)
{
...
mAdapter = new MyAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.viewpager);
mPager.setAdapter(mAdapter);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
...
updateFragments();
...
}
public void updateFragments()
{
//Attempt 1:
//mAdapter.notifyDataSetChanged();
//mPager.setAdapter(mAdapter);
//Attempt 2:
//HomeListFragment fragment = (HomeListFragment) getSupportFragmentManager().findFragmentById(mAdapter.fragId[0]);
//fragment.updateDisplay();
}
public static class MyAdapter extends FragmentPagerAdapter implements
TitleProvider
{
int[] fragId = {0,0,0,0,0};
public MyAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public String getTitle(int position){
return titles[position];
}
@Override
public int getCount(){
return titles.length;
}
@Override
public Fragment getItem(int position)
{
Fragment frag = HomeListFragment.newInstance(position);
//Attempt 2:
//fragId[position] = frag.getId();
return frag;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE; //To make notifyDataSetChanged() do something
}
}
public class HomeListFragment extends ListFragment
{
...
public static HomeListFragment newInstance(int num)
{
HomeListFragment f = new HomeListFragment();
...
return f;
}
...
ตอนนี้อย่างที่คุณเห็นความพยายามครั้งแรกของฉันคือการแจ้งให้ทราบ DataSetChanged บน FragmentPagerAdapter ทั้งหมดและสิ่งนี้แสดงให้เห็นว่าอัปเดตข้อมูลบางครั้ง แต่คนอื่น ๆ ที่ฉันได้รับ IllegalStateException: ไม่สามารถดำเนินการนี้หลังจาก
ความพยายามครั้งที่สองของฉันไม่ได้พยายามเรียกใช้ฟังก์ชันการปรับปรุงใน ListFragment ของฉัน แต่ getId ใน getItem กลับมา 0 ตามเอกสารที่ฉันพยายามโดย
การรับการอ้างอิงไปยัง Fragment จาก FragmentManager โดยใช้ findFragmentById () หรือ findFragmentByTag ()
แต่ฉันไม่รู้แท็กหรือรหัสของชิ้นส่วนของฉัน! ฉันมี android: id = "@ + id / viewpager" สำหรับ ViewPager และ android: id = "@ android: id / list" สำหรับ ListView ของฉันในรูปแบบ ListFragment แต่ฉันไม่คิดว่าสิ่งเหล่านี้มีประโยชน์
ดังนั้นฉันจะทำอย่างไร: ก) อัปเดตทั้ง ViewPager อย่างปลอดภัยในคราวเดียว (ส่งผู้ใช้กลับไปยังหน้าที่เขาเคยใช้มาก่อน) - ผู้ใช้เห็นการเปลี่ยนแปลงมุมมอง หรือโดยเฉพาะอย่างยิ่ง b) เรียกใช้ฟังก์ชันในแต่ละ ListFragment ที่ได้รับผลกระทบเพื่อปรับปรุง ListView ด้วยตนเอง
ความช่วยเหลือใด ๆ จะได้รับการยอมรับสุดซึ้ง!
null
ส่วน