1

以下是简单的步骤。

step1 : fragment1 was showing and it's already added to Backstack
step2 : fragment2 is added to Backstack and showing it now
step3 : fragment2 is removed from Backstack

所以最后,fragment1再次向用户展示。在这种情况下,是否有办法检测 fragment1 是否再次显示 inner fragment1

我试过了,OnResume()但它不起作用。

感谢您的回答!

4

4 回答 4

1
Fragment currentFragment = getFragmentManager().findFragmentById(R.id.fragment_container);

if (currentFragment instanceof YourFragment) {

if(currentFragment.this.isVisible())
{
  //your code
}
}
于 2017-05-16T08:24:36.183 回答
1

当您在事务中添加片段时,您应该使用标签。

fragTrans.replace(android.R.id.content, myFragment, "MY_FRAGMENT");

...稍后如果您想检查片段是否可见:

MyFragment myFragment = (MyFragment)getFragmentManager().findFragmentByTag("MY_FRAGMENT");
if (myFragment != null && myFragment.isVisible()) {
   // add your code here
}

另请参阅http://developer.android.com/reference/android/app/Fragment.html


我刚刚复制了这个答案https://stackoverflow.com/a/9295085/7232310 ,因为我认为这是你需要的。否则,您可以检查同一问题的以下答案。

希望能帮助到你!

于 2017-05-16T08:40:11.430 回答
0

Try onAttach(),这是在显示片段时触发。 onDetach()是检测片段是否离开用户界面。

例如:你有 3 个片段(frag1,frag2,frag3),每个片段你需要放onAttach()

frag1 
@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Toast.makeText(context, "I'm frag 1", Toast.LENGTH_SHORT).show();
    }
于 2017-05-16T08:30:37.067 回答
0

我认为有2个选项

尝试覆盖此行为并查看它是否有效

void onHiddenChanged (boolean hidden)

根据此处记录

或者其他选项是生命周期的onStart()/onResume()回调尝试观察片段可见性状态的行为。

boolean isVisible ()

根据此处记录

于 2017-05-16T08:50:42.590 回答