我一直在使用jfeinstein的SlidingMenu。我目前正在嘗試查找某個片段是否對用戶可見。我第一次嘗試:Android如何比較碎片?
if(mainfrag.isVisible()){
Log.d("Frag","Main is visible");
}else{
Log.d("Frag","Main is NOT visible");
}
它始終打印該片段不可見。然後我想:
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 :(");
}
這將打印
所以我知道findFragmentById
會告訴我的當前片段,但我不知道我怎麼能在邏輯上比較,所以我可以做只有在可見的情況下才可以。
umm!有一個方法' \t \t public void setUserVisibleHint(boolean isVisibleToUser){} –
如果你所有的片段都是不同的類,你可以做一個簡單的'instanceof'檢查。或者,給每個片段一個唯一的標籤(並且不要忘記提供每個片段的「FragmentTransaction」)。 –