Viewpager を使用するアクティビティがあります。Viewpager にはいくつかのフラグメントがあり、もちろんフラグメントは FragmentPagerAdapter によって準備されます。例を挙げましょう:
ここに私の活動があります:
public class SampleActivity extends FragmentActivity {
private ViewPager viewpager;
private SampleFragmentAdapter sample_fragment_adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.sample_layout);
viewpager = (ViewPager)findViewById(R.id.sample_pager);
sample_fragment_adapter = new SampleFragmentAdapter(getSupportFragmentManager(),this);
viewpager.setAdapter(sample_fragment_adapter);
}
FragmentPagerAdapter:
public class SampleFragmentAdapter extends FragmentPagerAdapter{
private Context context;
private int fCount;
private SampleFragment[] fragment_list;
public SampleFragmentAdapter(FragmentManager fm,Context context) {
super(fm);
this.context=context;
fragment_list=new SampleFragment[8];
fCount=fragment_list.length;
for(int i=0;i<8;i++){
fragment_list[i]=new SampleFragment();
fragment_list[i].setList(getList());
}
}
}
@Override
public Fragment getItem(int position) {
return fragment_list[position];
}
@Override
public int getCount() {
return fCount;
}
public void getList(){
//here , an arraylist which is not null is returned
//this arraylist includes data using by listview in fragment
}
そして最後に、私の Fragment クラス (Fragment にはリストビューが含まれています):
public class SampleFragment extends Fragment implements AdapterView.OnItemClickListener{
private View view;
private ListView sample_list_view;
private LessonListAdapter sample_list_adapter;
private ArrayList<Sample> sample_list;
public void setList(ArrayList<Sample> sample_list){
this.sample_list=sample_list;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view=inflater.inflate(R.layout.sample_list_layout, container, false);
sample_list_view=(ListView)view.findViewById(R.id.sample_list_view);
sample_list_adapter=new SampleListAdapter(getActivity(),sample_list);
sample_list.setAdapter(sample_list_adapter);
return view;
}
私の問題: アクティビティが任意の向きで開始すると、完全に機能します。しかし、向きを変更すると、アクティビティが再び開始され、SampleFragment の onCreateView メソッドが setList() メソッドの前に呼び出されると思います。 arraylistの準備が整うまで.これはFragmentのライフサイクルの問題だと思います.どうすれば解決できますか?
助けてくれてありがとう