这是回答我的问题的文章。对于Android新手来说,这告诉我所有需要去的地方。
https://stackoverflow.com/a/30865486/2640458
是需要看到的onBackPress()方法从它的活性片段:
public class RatingFragment extends Fragment implements ContentActivity.OnBackPressedListener {
@Override
public void doBack() {
getFragmentManager().popBackStack();
}
非常重要的订阅听者在上面的片段:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_rating, container, false);
((ContentActivity)getActivity()).setOnBackPressedListener(this);
}
需要将onBackPress()方法发送到上述片段的活动:
public class ContentActivity extends Activity {
protected OnBackPressedListener onBackPressedListener;
public interface OnBackPressedListener {
void doBack();
}
public void setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
this.onBackPressedListener = onBackPressedListener;
}
@Override
public void onBackPressed() {
if (onBackPressedListener != null)
onBackPressedListener.doBack();
else
super.onBackPressed();
}
@Override
protected void onDestroy() {
onBackPressedListener = null;
super.onDestroy();
}
}
is onBackPressed()是否必需?或者你只是试图做一些事情,因为片段被毁坏? –
也许最好重写'onPause'? –
堆栈中的最后2个碎片需要同时弹出,或者一个紧跟在另一个之后,我用两次调用popBackStack()建立的取消按钮来完成此操作(可能不是最佳方式这样做...),所以我需要做同样的onBackPressed(),否则只有1片段被破坏。 – Sevren