gpt4 book ai didi

Android如何比较 fragment ?

转载 作者:行者123 更新时间:2023-11-29 14:39:00 27 4
gpt4 key购买 nike

我一直在使用 jfeinstein 的 SlidingMenu .我目前正在尝试查找某个 fragment 是否对用户可见。我第一次尝试:

    if(mainfrag.isVisible()){
Log.d("Frag","Main is visible");
}else{
Log.d("Frag","Main is NOT visible");
}

总是打印 fragment 不可见。然后我尝试了:

android.support.v4.app.FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
Log.d("Frag","CurFrag: "+fragmentManager.findFragmentById(R.id.content_frame).toString());

MainFragment mf = new MainFragment();
if(fragmentManager.findFragmentById(R.id.content_frame) == mf){
Log.d("Frag","This is Main");

}else{
Log.d("Frag","This is NOT Main :(");

}

这打印

enter image description here

所以我知道 findFragmentById 会告诉我当前 fragment ,但我不知道如何从逻辑上比较它,所以只有当它可见时我才能做事。

最佳答案

我从来没有深入研究过 SlidingMenu 的细节,也无法告诉你第一个问题出了什么问题。

但是在你的第二个问题中,你正在比较两个不同的对象。

MainFragment mf = new MainFragment();
fragmentManager.findFragmentById(R.id.content_frame) == mf

这里您创建了一个新的 MainFragment,并尝试将其与旧实例进行比较。它永远不可能是真的。比较对象时,比较的是地址。只有当它们是相同的对象时才会返回 true。

如果你只想检查对象的类,使用下面的代码:

Fragment f = fragmentManager.findFragmentById(R.id.content_frame);
if(f instanceof MainFragment)
// code here.

关于Android如何比较 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com