[英]Does fragment call the onCreate method of parent activity?
我有一個帶有viewPager的活動,並且我在活動的onCreate方法中使用Collections.shuffle(list)
改組了一個靜態的整數整數ArrayList,該viewPager的片段在父活動中使用ArrayList。
問題是,每當一個新的viewPager實例化的片段被調用時,父活動的onCreate方法就會被調用,而我不希望發生這種情況,因為我希望列表在所有片段中都具有相同的數據,而不是重新排列。 片段是否在每次有新實例時都調用其父活動的onCreate方法? 如果是,我如何解決此問題,以防止列表每次都亂碼?
碼:
活動代碼:
public static final ArrayList<Integer> IDs = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
IDs.add(0);
IDs.add(1);
IDs.add(2);
Collections.shuffle(IDs);
setContentView(R.layout.activity_walkthrough);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
片段代碼:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = (View) inflater.inflate(
R.layout.fragment_walkthrough, container, false);
final TypedArray imgs = getResources().obtainTypedArray(R.array.walkthrough_images);
ImageView imageView = (ImageView) v.findViewById(R.id.image);
if (page == 0) {
imageView.setImageResource(imgs.getResourceId(Walkthrough.IDs.get(0), 0));
} else if (page == 2) {
imageView.setImageResource(imgs.getResourceId(Walkthrough.IDs.get(1), 0));
} else {
imageView.setImageResource(imgs.getResourceId(Walkthrough.IDs.get(2), 0));
}
return v;
}
現在,我希望在實例化一個新片段時ArrayList“ ID”始終具有相同的數據和順序,但是它不起作用,每次創建新片段時,都會調用onCreate方法,並發生重新排列!
片段被添加到活動中,因此片段會受到活動的影響。 活動可能導致調用任何片段回調方法,但片段不能
片段所在的活動的生命周期直接影響片段的生命周期。
例如,當活動收到onPause()時,活動中的每個片段都會收到onPause()。
片段具有一些額外的生命周期回調,但是,它們處理與活動的唯一交互,以執行諸如構建和銷毀片段的UI之類的操作。 這些其他回調方法類似於onAttach(),onCreateView()等。
它將清除片段和活動之間的某種關系。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.