這是回答我的問題的文章。對於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