簡體   English   中英

onResume() 在 Fragments 中不能正常工作?

[英]onResume() is not working properly in Fragments?

我正在處理 Fragments,所以這里我的視圖尋呼機中有三個 Fragment

所以在這里我在我的第一個片段中使用onResume()方法,所以當我從一個片段滑動到另一個片段時我又回到第一個片段我的onResume方法不起作用

所以任何人都可以給出解決方案

只有當Activities onResume()onPause()被調用時, fragment's onResume()onPause()才會被調用。 它們與Activity緊密耦合。 檢查這個這個

當您在fragment屏幕上時,它也可能會被調用幾次。 在您的情況下,由於您的viewpager位於Activity ,因此當您滑動到該fragment時,可能不會調用fragment onResume()

這是由於ViewPagerFragment保存在內存中的方式。 如果Fragment滾動超過屏幕外頁面限制(通過.setOffscreenPageLimit()設置),則應將其從內存中刪除並在重新加載時重新實例化(IIRC,當它返回屏幕時可能無法保證)。

要在選擇頁面時運行特定於片段的代碼,您可以嘗試以下操作:

mPager.setOnPageChangeListener(new SimpleOnPageChangeListener() {
    @Override
    public void onPageSelected(int position) {
        final MyFragment fragment = mAdapter.getFragment(position);
        fragment.myMethod();
    }
}

我自己也遇到過這個問題。

首先將tabListener添加到您的 viewpager。 onTabSelected方法中,創建所選片段的實例並調用onResume()

            ActionBar.TabListener tabListener = new ActionBar.TabListener() {

                @Override
                public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
                }

                @Override
                public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                    viewPager.setCurrentItem(tab.getPosition());
                    mContent.setUserVisibleHint(false);
                    mContent.onPause();
                    mContent = mAdapter.getItem(tab.getPosition());
                    mContent.setUserVisibleHint(true);
                    mContent.onResume();
                }

                @Override
                public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
                }
            };

這里, mContent是當前選擇的片段, mAdapter是 viewpager 的適配器。

在片段中(使用 ViewPager)使用 setUserVisibleHint(boolean isVisibileToUser) 代替 onResume():

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
    refresh();
} else {

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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