Thêm phương pháp này trong hoạt động của bạn:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
if(this.getFragmentManager().getBackStackEntryCount() != 0){
this.getFragmentManager().popBackStack();
return true;
}
// If there are no fragments on stack perform the original back button event
}
return super.onKeyDown(keyCode, event);
}
Sau đó, nơi bạn đang thay đổi các mảnh vỡ làm điều này:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, new YourFragmentName());
transaction.addToBackStack(null); // this is needed for the above code to work
transaction.commit();
Nguồn
2013-02-11 14:06:13
Và nếu bạn làm điều này, bạn sẽ không phải ghi đè hành vi nút BACK. Các mảnh nhìn thấy được sẽ tự động được loại bỏ và đoạn tiếp theo trong backstack sẽ được hiển thị tự động khi bạn nhấn BACK. –
Điều này không hoạt động đối với tôi, tôi đang sử dụng thư viện v4. –
FragmentManager.popBackStack() tải lại đoạn. –