第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

片段onResume()和onPause()在后臺程序中未調(diào)用

片段onResume()和onPause()在后臺程序中未調(diào)用

隔江千里 2019-12-16 10:21:26
我在一個活動中有多個片段。在一個按鈕上,單擊“我正在開始一個新的片段,將其添加到堆?!?。我自然希望可以調(diào)用onPause()當(dāng)前Fragment和onResume()new Fragment 的方法。好吧,這沒有發(fā)生。LoginFragment.javapublic class LoginFragment extends Fragment{  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {      final View view  =   inflater.inflate(R.layout.login_fragment, container, false);      final FragmentManager mFragmentmanager =  getFragmentManager();      Button btnHome  = (Button)view.findViewById(R.id.home_btn);      btnHome.setOnClickListener(new View.OnClickListener() {        public void onClick(View view){           HomeFragment fragment    = new HomeFragment();           FragmentTransaction ft2   =  mFragmentmanager.beginTransaction();           ft2.setCustomAnimations(R.anim.slide_right, R.anim.slide_out_left                    , R.anim.slide_left, R.anim.slide_out_right);           ft2.replace(R.id.middle_fragment, fragment);           ft2.addToBackStack("");            ft2.commit();             }      });  }  @Override  public void onResume() {     Log.e("DEBUG", "onResume of LoginFragment");     super.onResume();  }  @Override  public void onPause() {    Log.e("DEBUG", "OnPause of loginFragment");    super.onPause();  }}HomeFragment.javapublic class HomeFragment extends Fragment{  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     final View view  =   inflater.inflate(R.layout.login_fragment, container, false);  }我所期望的是當(dāng)用戶點(diǎn)擊按鈕,LoginFragment被替換為 HomeFragment,onPause()的LoginFragment和onResume()的 HomeFragment被調(diào)用當(dāng)被壓回,HomeFragment是POP操作并LoginFragment看到,和onPause()的HomeFragment和onResume()的LoginFragment 被調(diào)用。我得到的是當(dāng)用戶點(diǎn)擊按鈕,HomeFragment正確更換 LoginFragment,的onResume()的HomeFragment被調(diào)用,但在onPause(的)LoginFragment永遠(yuǎn)不會被調(diào)用。當(dāng)按下回來,HomeFragment正確彈出透露 LoginFragment,在onPause()的HomeFragment被調(diào)用,但的onResume(的)LoginFragment不會被調(diào)用。這是正常行為嗎?為什么當(dāng)我按下“后退”按鈕時onResume(),LoginFragment沒有被調(diào)用。片段onResume()和onPause()在后臺程序中未調(diào)用
查看完整描述

3 回答

?
至尊寶的傳說

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個贊

片段onResume()onPause()僅在調(diào)用活動onResume()或時才onPause()被調(diào)用。他們緊密地聯(lián)系在一起Activity



查看完整回答
反對 回復(fù) 2019-12-16
?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個贊

這是我的Gor答案的更可靠的版本(使用fragments.size()是不可靠的,因?yàn)樵趶棾銎魏蟠笮〔粫p?。?/p>


getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {

        @Override

        public void onBackStackChanged() {

            if (getFragmentManager() != null) {


                Fragment topFrag = NavigationHelper.getCurrentTopFragment(getFragmentManager());


                if (topFrag != null) {

                    if (topFrag instanceof YourFragment) {

                        //This fragment is being shown. 

                    } else {

                        //Navigating away from this fragment. 

                    }

                }

            }

        }

    });

和“ getCurrentTopFragment”方法:


public static Fragment getCurrentTopFragment(FragmentManager fm) {

    int stackCount = fm.getBackStackEntryCount();


    if (stackCount > 0) {

        FragmentManager.BackStackEntry backEntry = fm.getBackStackEntryAt(stackCount-1);

        return  fm.findFragmentByTag(backEntry.getName());

    } else {

        List<Fragment> fragments = fm.getFragments();

        if (fragments != null && fragments.size()>0) {

            for (Fragment f: fragments) {

                if (f != null && !f.isHidden()) {

                    return f;

                }

            }

        }

    }

    return null;

}


查看完整回答
反對 回復(fù) 2019-12-16
  • 3 回答
  • 0 關(guān)注
  • 802 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號