2013-03-15 38 views
6

Tôi có hai hoạt động, MainActivityNextActivity. Từ MainActivity Tôi có thể truy cập NextActivity và sau đó sử dụng Intent để quay lại MainActivity. Nhưng sau đó OnCreate và các nội dung khác sẽ được gọi và nó sẽ giống như mọi thứ được khởi tạo lại. Tôi muốn trở lại trạng thái giống như trước khi tôi bước vào NextActivity.Android quay lại Hoạt động trước

Tôi nhận ra rằng nếu tôi sử dụng nút quay vật lý trên điện thoại của tôi chính xác điều này đạt được.

Vậy làm cách nào để quay lại hoạt động giống như nút quay lại?

PS. Tôi đã thử nghiệm finish() nhưng không trợ giúp.

+3

bạn có thực sự kiểm tra kết thúc không? làm sao? đó là cách – lelloman

+2

kết thúc() là con đường để đi. Điều đó có nghĩa là nó không giúp ích gì? Có thể bạn đã hết bộ nhớ và Android phải xây dựng lại Hoạt động của bạn? – Zielony

+0

Tôi không nghĩ rằng có bất kỳ đảm bảo rằng hoạt động trước đó của bạn sẽ vẫn có sẵn. Bạn nên lưu trạng thái bằng cách sử dụng tùy chọn hoặc một số loại bộ nhớ trong trường hợp hoạt động đã được thu thập rác. – Davos555

Trả lời

25

bạn chỉ có thể gọi onBackPressed() thay vì sử dụng Intent quay trở lại MainActivity ..

Ví dụ:

public void onClick() { 
    onBackPressed(); 
} 

Lưu ý: finish() nên làm chính xác những gì bạn muốn ..

+0

đó là câu trả lời @Jonas –

4

Giả bạn có hai Hoạt động A và B. Bạn điều hướng từ A đến B. A chuyển sang nền.

B được đặt ở ngăn xếp lưng và B lấy nét. Khi bạn nhấp vào nút quay lại hoạt động B bật ra khỏi ngăn xếp trở lại. Hoạt động A được tiếp tục.

Lưu ý: Nhiều tác vụ có thể được giữ trong nền cùng một lúc. Tuy nhiên, nếu người dùng đang chạy nhiều tác vụ nền cùng lúc, hệ thống có thể bắt đầu hủy hoạt động nền để khôi phục bộ nhớ, khiến trạng thái hoạt động bị mất. Xem phần sau về trạng thái Hoạt động.

http://developer.android.com/training/basics/activity-lifecycle/starting.html. Hoạt động sau khi bị phá hủy phải được tạo lại. Hoạt động bị hủy và tái tạo khi hướng màn hình thay đổi.

http://developer.android.com/training/basics/activity-lifecycle/starting.html.

http://developer.android.com/guide/components/tasks-and-back-stack.html. Bạn nên có một cái nhìn về cách hoạt động của stack.

Trong trường hợp hoàn thành của bạn sẽ làm việc cho bạn (bằng cách nhấn nút quay lại).

Lưu ý: Hệ thống gọi onDestroy() sau khi nó đã được gọi onPause() và onStop() trong mọi tình huống ngoại trừ một: khi bạn gọi kết thúc() từ trong phương thức onCreate().

Giả sử bạn có hoạt động thứ ba C và bạn muốn chuyển đến Hoạt động A.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
    onBackPressed(); 

} 

return super.onKeyDown(keyCode, event); 
} 

public void onBackPressed() { 
Intent myIntent = new Intent(ActivityC.this, MainActivity.class); 
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear back stack 
startActivity(myIntent); 
finish(); 
return; 
} 
Các vấn đề liên quan