[英]Strange fragment lifecycle behavior: onCreate called twice
我創建了簡單的片段。
碎片類
public class MyFragment extends Fragment {
static int count = 0;
static TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TEST", "oncreate");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag, container, false);
tv = (TextView) view.findViewById(R.id.tv);
return view;
}
public static TextView setMyText(String text) {
tv.setText(text);
return tv;
}
}
但問題是onCreate片段被調用兩次(當活動首次啟動時)。 任何人都知道為什么? 實際上,每個生命周期方法都被調用兩次(onAttach,onResume ..)。 如果有人想知道,我不會旋轉屏幕或任何東西。 這是常見的情況還是我在這里做錯了什么?
活動類
public class MainActivity extends FragmentActivity {
private static int COUNT = 0;
private static int COUNT2 = 5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_pager);
ViewPager vp = (ViewPager) findViewById(R.id.vp);
vp.setAdapter(new MyAdapter(getSupportFragmentManager()));
vp.setOnPageChangeListener(new CustomPageListener());
}
private static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
MyFragment mf = new MyFragment();
return mf;
}
@Override
public int getCount() {
return 5;
}
}
private class CustomPageListener extends ViewPager.SimpleOnPageChangeListener {
@Override
public void onPageSelected(int position) {
MyFragment.setMyText("This is page "+position);
}
}
}
默認情況下, FragmentStatePagerAdapter
將為ViewPager實例化兩個頁面。 onCreate它被調用兩次,一次為public Fragment getItem(int position)
返回的每個片段public Fragment getItem(int position)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.