我无法在调用片段B后找到片段A中返回的位置。
片段A调用片段测试如下:
<button (mouseover)="showMesageValidation()" class="edm-button" type="submit" [disabled]="!f.valid">confirm</button>
在测试中,我点击一个按钮返回:
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
Test test = new Test();
ft.replace(R.id.container, test);
ft.addToBackStack("test");
ft.commit();
}
});
从那里我以为它回到了onAttach的片段A,onResume但是我看不到它在Fragment A中的返回位置?
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Button btn = (Button) getActivity().findViewById(R.id.back);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
getActivity().getFragmentManager().popBackStackImmediate();
}
});
}
答案 0 :(得分:0)
PopBackStack()没有弹出片段,它会弹出片段事务。
因此,最后一个片段事务在被调用时会被反转。如果您从FragmentA移动到FragmentTest,那么它将用FragmentTest替换FragmentA并将该事务添加到后端堆栈(而不是片段)。如果你然后按下后退按钮,它会从后面的堆栈中弹出事务,这是&#34;用FragmentTest替换这个FragmentA&#34;。
该指令反转最后一个事务并将其从执行的事务堆栈中删除。所以onAttach不会被调用,因为你正在替换片段oncreateView将被调用。
编辑:使用此功能检查backstack是否存在且包含测试片段。
if (getSupportFragmentManager().getBackStackEntryCount() > 0 && getSupportFragmentManager().findFragmentById(R.id.your_container)!=null) {
Fragment fragment= getSupportFragmentManager().findFragmentById(R.id.your_container);
if(fragment.getClass().getSimpleName().equalsIgnoreCase(FragmentTest.class.getSimpleName())){
getSupportFragmentManager().popBackStackImmediate();
}
}
答案 1 :(得分:-1)
使用
Log.d("Fragment", "Fragment A")
在Fragment A类的onResume()方法中。如果控制返回到片段A,则该行将显示在logcat中。