2010-04-22 25 views
6

Vì vậy, tôi có một mê cung lớn về các hoạt động trong ứng dụng của tôi. Những gì tôi cần làm là khi người dùng đăng nhập vào hệ thống, lịch sử hoạt động sẽ bị xóa. Tôi không thể sử dụng kết thúc() khi tôi bắt đầu một hoạt động mới, vì tôi muốn các hoạt động có lịch sử cho đến khi người dùng đăng nhập. Tôi đã thử nghiệm với các cờ khác nhau khi bắt đầu một hoạt động, nhưng tôi đã không thành công. Bất kỳ ý tưởng?Bắt đầu hoạt động và lịch sử hoạt động rõ ràng

Chúc mừng,

Trả lời

2

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 ...

+0

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

+1

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

+0

True, tôi đã sửa câu trả lời của mình. – pgsandstrom

1

bạn có thể sử dụng 65536 thay vì Intent.FLAG_ACTIVITY_NO_ANIMATION cho các phiên bản trước đó

Các vấn đề liên quan