2014-12-29 55 views
0

当我使用“添加”来添加一个新的片段而不是“替换”时,我用“删除”返回时无法将焦点转移到原始片段(FragmentA)。要添加新的片段,我用下面的代码:删除片段并没有给出以前的片段焦点

Fragment fragment = new FragmentB(); 
FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.add(R.id.frame_container, fragment, fragment.getClass().getName()); 

要返回,我使用下面的代码:

getFragmentManager().beginTransaction().remove(FragmentB.this).commit(); 

现在,当我打电话,这两个片段有一个方法,在片段FragmentB似乎正在执行并与NPE崩溃,应调用FragmentA。删除FragmentB后,如何将焦点放在FragmentA上?

+0

尝试使用PopStackBack而不是。也必须将该片段设置为空,我的意思是如果您保留在任何地方引用的对象。 – hmartinezd

+0

我在与getFragmentManager()。popBackStack()'一起提交事务之前,通过添加'ft.addToBackStack(null);来设法解决它。 – UAJ

回答

0

我设法解决了这个问题,在提交事务之前加入了ft.addToBackStack(null);,并在返回时一起提交了getFragmentManager().popBackStack()

+0

原来,它没有完全工作,我需要添加一个方法,请求焦点到片段中的布局,现在可以工作(尽管如此)。 – UAJ