2010-04-27 37 views

Trả lời

90

Gọi finish() từ hoạt động bạn muốn kết thúc sẽ giải quyết vấn đề này.

Chỉnh sửa nhiều năm sau: Điều này vẫn hoạt động nhưng đó là một cách tiếp cận nặng nề. Khi tôi đăng bài này lần đầu tiên, Fragments không tồn tại, và (như một số người bình luận đã chỉ ra) điều này không hoạt động theo cùng một cách khi có Fragments tham gia. Có cách tiếp cận tốt hơn bây giờ nếu bạn đang sử dụng Fragments.

+0

thats rigth, dễ dàng như vậy, xin lỗi .... – david

+7

Không cần phải xin lỗi, chỉ cần hạnh phúc để giúp đỡ! –

+17

Điều này không mô phỏng nút quay lại. Nếu bạn chỉ sử dụng các hoạt động thì ok nhưng nếu bạn đang sử dụng các mảnh trong một hoạt động, điều này sẽ đóng tất cả các mảnh với hoạt động cùng nhau. – tasomaniac

34

khi sử dụng mảnh:

getFragmentManager().popBackStack(); 

hoặc

getSupportFragmentManager().popBackStack(); 

nếu bạn đang sử dụng android.support.v4.app gói

1

Đây là một tình huống mà cùng một đoạn đôi khi có thể là mảnh duy nhất trong một hoạt động, và đôi khi là một phần của hoạt động đa mảnh, ví dụ trên một máy tính bảng nơi hai các mảnh có thể nhìn thấy cùng một lúc.

/** 
* Method that can be used by a fragment that has been started by MainFragment to terminate 
* itself. There is some controversy as to whether a fragment should remove itself from the back 
* stack, or if that is a violation of the Android design specs for fragments. See here: 
* http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-i-e-its-equivalent-of-finish 
*/ 
public static void fragmentImplementCancel(Fragment fragment) { 

    FragmentActivity fragmentActivity = fragment.getActivity(); 
    FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager(); 

    if (fragmentManager.getBackStackEntryCount() == 1) { 
     fragmentManager.popBackStack(); 
    } 
    else { 
     fragmentActivity.finish(); 
    } 
} 

Mã này có thể được gọi để triển khai nút Hủy, ví dụ:

if (theButton.getId() == R.id.btnStatusCancel) { 
     StaticMethods.fragmentImplementCancel(this); 
    } 
50

Just for kỷ lục: Phương pháp mô tả không làm tương tự như nút quay lại làm trong một số trường hợp, nhưng bạn có thể gọi

this.onBackPressed(); 

hoặc

getActivity().onBackPressed(); 

nếu bạn đang ở trong một mảnh để đạt được exaclty cùng một hành vi.

+3

Từ những gì tôi có thể nói, đây là câu trả lời hay nhất. Cảm ơn. –

0

Bạn có thể giả mạo một nút gọi lên trên nút bấm lại:

@Override 
public void onBackPressed() { 
    onNavigateUp(); 
} 
Các vấn đề liên quan