Tôi cũng có thể tiết lộ hax tôi hiện đang sử dụng để giải quyết vấn đề của mình. Trên "pre-đăng nhập" hoạt động, tôi đã thiết lập này trong biểu hiện:
android:noHistory="true"
Sau đó, trong từng hoạt động tôi có mã này:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent intent = new Intent(MyActivity.this, ParentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}
Các FLAG_ACTIVITY_NO_ANIMATION chỉ hoạt động trên điện thoại với mức API 5 hoặc cao hơn, nhưng những gì nó làm là thay vào đó trên "mở hoạt động mới" -animation, "trở lại hoạt động trước đó" -animation được chơi (ít nhất là trên droid và nexus). Điều này ngăn cản sự xuất hiện khó hiểu rằng một hoạt động mới được bắt đầu khi người dùng nhấn nút quay lại.
Giải pháp này không hoàn hảo. Trên điện thoại có mức API thấp hơn thì 5 hoạt ảnh trở nên không chính xác. Ngoài ra, nó không phải là siêu gọn gàng và đòi hỏi nhiều mã hơn sau đó tôi thích. Tuy nhiên, nó hoạt động ...
này hoàn toàn làm việc cho tôi khi cố gắng để mô phỏng "đi lại" tới hoạt động trước đó (có nghĩa là, tất nhiên, không thực sự ở đó). Cảm ơn! Tôi sẽ thực hiện điều này bằng cách sử dụng ID hoạt ảnh mặc định nhưng, thật ngạc nhiên, những thứ đó không được công bố công khai. Đi con số. – dmon
nếu bạn đang thực sự sử dụng keyDown, có lẽ bạn nên trả về true thay vì gọi số siêu – njzk2
True, tôi đã sửa câu trả lời của mình. – pgsandstrom