我想在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
。
你可以帮忙解决一些问题吗? 干杯!
答案 0 :(得分:0)
每次在onBackPressed函数中创建fragment1对象,这意味着它不会为null并且它处于不可见状态。首先打开NDListeningFragment时,需要在backstack中添加NDListeningFragment,并检查片段是否在后栈中可用。如果是,则调用super.onBackpressed。