检测android中的可见片段

时间:2014-12-17 06:44:25

标签: android android-fragments

我想在android中实现onbackpressed(),我的代码如下

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并在framelayout中替换它。

但我无法以这种方式实施。当我按下后退按钮时,它会一次又一次地重新加载Connected DevicesFragment

你可以帮忙解决一些问题吗? 干杯!

1 个答案:

答案 0 :(得分:0)

每次在onBackPressed函数中创建fragment1对象,这意味着它不会为null并且它处于不可见状态。首先打开NDListeningFragment时,需要在backstack中添加NDListeningFragment,并检查片段是否在后栈中可用。如果是,则调用super.onBackpressed。