Я использую jfeinstein's 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»). –