有没有办法检测片段是否显示给用户?

时间:2017-05-16 08:20:18

标签: android android-fragments fragment-lifecycle

以下是简单的步骤。

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是否再次显示内部fragment1

我尝试使用OnResume(),但它无法正常工作。

感谢您的回答!

4 个答案:

答案 0 :(得分:1)

@PropertySource("myfile.properties")
public class Config {

    @Autowired
    private Environment env;

    @Bean
    ApplicationProperties appProperties() {
        ApplicationProperties bean = new ApplicationProperties();
        bean.setKey1(environment.getProperty("key1"));
        bean.setsomeotherkey(environment.getProperty("someotherkey"));
        return bean;
    }
}

答案 1 :(得分: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 因为我认为你需要的是。否则,您可以在同一问题上查看以下答案。

希望它有所帮助!

答案 2 :(得分:0)

尝试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();
    }

答案 3 :(得分:0)

我认为有2个选项

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

Bearer %generated token string%

根据记录here

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

onResume()

根据记录here