簡體   English   中英

片段是否調用父活動的onCreate方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM