2016-01-29 3 views
0

Я искал, чтобы получить отображаемый в данный момент фрагмент, и нашел некоторые ответы. Я попробовал findFragmentById. Он возвращает null. Я использую FrameLayout в XML-фрагменте. Не <fragment>. Поэтому, возможно, поэтому он возвращает null. Я использую id<FrameLayout> в findFragmentById.Получить тег отображаемого в данный момент фрагмента

Кто-то сказал мне использовать теги. Но я не могу понять, как использовать теги, которые вы устанавливаете при замене фрагмента, чтобы проверить, имеет ли текущий фрагмент тег.

Если отображается определенный фрагмент, выбранный из навигационного ящика, мне нужно выйти из приложения на onBackPressed(), очистив все действия в стеке. Мне просто нужно увидеть, является ли отображаемый в данный момент фрагмент конкретным фрагментом.

Не могли бы вы объяснить, пожалуйста, пример. Я делаю это несколько дней и не могу понять.

Редактировать. Я не размещал никакого кода, потому что мне просто нужен пример. Я отправил вопрос о findFragmentById, возвращая null уже, и кто-то предложил мне использовать теги, и я не могу понять, используя тег, чтобы проверить, является ли это текущим фрагментом.

+0

Можете ли вы, по крайней мере, прочитать весь вопрос перед тем, как свалить? Прошло всего несколько секунд с тех пор, как я опубликовал его. Пожалуйста, объясните, почему вы занимаетесь ниспровержением. Я думаю, что это законный вопрос – Abhi

ответ

1

Я надеюсь, что это может помочь вам

В момент вызова фрагмента установить уникальный тег для каждого фрагмента, как

 Fragment fragment=new HomeFragment(); 
FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment,"Home").commit(); 
//home is the tag 

В onBackPressed метод проверки вашего MainActivity, что особенно фрагмент виден или не

Fragment hm=getFragmentManager().findFragmentByTag("Home"); 
    if(hm!=null) 
    { 
     if(hm.isVisible()) 
     { 
     //exit your application 
      MainActivity.this.finish(); 
     } 
    } 
Смежные вопросы