gpt4 book ai didi

java - 奇怪的 fragment 生命周期行为 : onCreate called twice

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:38 26 4
gpt4 key购买 nike

我创建了简单的 fragment 。

fragment 类

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 fragment 被调用了两次(当 Activity 首次启动时)。任何人都知道为什么?事实上,每个生命周期方法都会被调用两次(onAttach、onResume..)。如果有人想知道,我没有旋转屏幕或其他任何东西。这是常见情况还是我在这里做错了什么?

Activity 课

 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)

返回的每个 fragment

关于java - 奇怪的 fragment 生命周期行为 : onCreate called twice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17165349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com