我有一个托管ViewPager的Activity,并且我有4个Fragments;
开始时,ViewPager包含Fragment A,
当用户在ViewPager上滑动时,Fragment B进入ViewPager,然后是Fragment C和Fragment D等等。
现在,只要FragmentPagerAdapter被实例化,至少会创建2个Fragments。
这带来了两个问题:
1.每个Fragment都需要执行网络调用,但我不想做不必要的操作(如果用户从未切换到Fragment B,则不想为其进行网络调用);
2.与1类似,当Fragment执行网络调用时,我需要显示ProgressDialog,但如果用户从未访问Fragment B,则不想从该Fragment显示对话框...
请问在这种情况下应该使用什么样的模式?
活动
public class PagerActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_layout);
ViewPager pager=(ViewPager)findViewById(R.id.pager);
TabPageIndicator tabs=(TabPageIndicator)findViewById(R.id.titles);
pager.setAdapter(buildAdapter());
tabs.setViewPager(pager);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
FragmentPagerAdapter
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
@Override
public int getCount() {
return (4);
}
@Override
public Fragment getItem(int position) {
if (position == 1) {
if (dashbardFragment == null)
dashbardFragment = DashBoardFragment.newInstance(position);
return dashbardFragment;
}
if (position == 0) {
if (listOfParticipantFragment == null)
listOfParticipantFragment = ListOfParicipantsFragment
.newInstance(position);
return listOfParticipantFragment;
}
}
1 碎片
public class ListOfParicipantsFragment extends Fragment {
public static ListOfParicipantsFragment newInstance(int position) {
ListOfParicipantsFragment frag = new ListOfParicipantsFragment();
return (frag);
}
public static String getTitle(Context ctxt, int position) {
return myApplication.getContext().getResources().getString(R.string.list_of_participants_fragment_title);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View result = inflater.inflate(R.layout.guest_list_fragment_layout,
container, false);
return (result);
}