假设我有一个以编程方式添加片段的活动:
private void animateToFragment(Fragment newFragment, String tag) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, tag);
ft.addToBackStack(null);
ft.commit();
}
返回前一个可见片段的最佳方法是什么?
我发现Android中按钮点击的触发后退按钮功能,但我认为模拟后退键事件不是正确的方法(我也不能让它工作):
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
调用finish()只是关闭我不感兴趣的活动。
还有更好的办法吗?
要使该片段再次出现,只需将该片段添加到backstack,你想要回来按下,例如:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = new LoginFragment();
//replacing the fragment
if (fragment != null) {
FragmentTransaction ft = ((FragmentActivity)getContext()).getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.addToBackStack("SignupFragment");
ft.commit();
}
}
});
在上面的情况下,当按钮按钮被按下时,我打开LoginFragment,现在用户在SignupFragment中。因此,如果调用addToBackStack(TAG),其中TAG = "SignupFragment",那么当在LoginFragment中按下返回按钮时,我们将返回到SignupFragment。
编码快乐!
要使该片段再次出现,只需将该片段添加到backstack,你想要回来按下,例如:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment fragment = new LoginFragment();
//replacing the fragment
if (fragment != null) {
FragmentTransaction ft = ((FragmentActivity)getContext()).getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.addToBackStack("SignupFragment");
ft.commit();
}
}
});
在上面的情况下,当按钮按钮被按下时,我打开LoginFragment,现在用户在SignupFragment中。因此,如果调用addToBackStack(TAG),其中TAG = "SignupFragment",那么当在LoginFragment中按下返回按钮时,我们将返回到SignupFragment。
编码快乐!