2014-12-17 3 views
0

Я хочу реализовать onbackpressed() в Android, и мой код выглядит следующим образомОбнаружение видимого фрагмента в андроида

public void backpressed(){ 
    NDListeningFragment fragment1=(NDListeningFragment)getSupportFragmentManager().findFragmentByTag(ConnectedDevicesFragment.TAG); 
      if(fragment1!=null && fragment1.isVisible()) 
      { 
       super.onBackPressed(); 
      } 
      else 
      { 
       fragment1=(NDListeningFragment)SimpleFragmentFactory.createFragment(ConnectedDevicesFragment.TAG); 
       getSupportFragmentManager().beginTransaction().replace(R.id.content,fragment1).commit(); 
       fragment1.setUserVisibleHint(true); 

      } 
} 

Вышеуказанные проверки кода, если видимый фрагмент ConnectedDevicesFragment. Если да, то вызывается super(), а если нет, то создаю ConnectedDevicesFragment и заменим его в рамке.

Но я не в состоянии реализовать таким образом. Когда я нажимаю кнопку, он снова и снова перезагружает Connected DevicesFragment.

Вы можете помочь с некоторым обходным решением. Приветствия!

+2

вам необходимо переопределить onBackPressed() в действии –

+0

См. Мое редактирование. Извини, я виноват –

ответ

0

Вы каждый раз создаете объект fragment1 в функции onBackPressed, это означает, что он не будет null и будет находиться в невидимом состоянии. Вы должны добавить NDListeningFragment в backstack, когда сначала открываете NDListeningFragment и проверяете, доступен ли фрагмент в стеке возврата. Если да, то вызовите super.onBackpressed.

Смежные вопросы