2013-07-03 26 views
8

Kịch bản: Tôi có một MainActivity.java, OtherPageForFragments.java và một mảnh mà là trên OtherPageForFragments.javaAndroid: không setResult làm việc

Trong MainActivity.java, tôi đã viết đoạn mã sau để bắt đầu một hoạt động và nhận được kết quả trong

onActivityResult (int requestCode, int resultCode, dữ liệu Ý định)

startActivityForResult(new Intent(this, OtherPageForFragments.class),REQUEST_CODE_MAP); 

Trong onDestroy() của lớp đoạn, tôi đã viết này:

public void onDestroyView() { 
     // TODO Auto-generated method stub 
     super.onDestroyView(); 
     mlocManager.removeUpdates(this); 
     Intent intent = new Intent(); 
     intent.putExtra("Latitude", passLatLng.latitude); 
     intent.putExtra("Longitude", passLatLng.longitude); 
     getActivity().setResult(Activity.RESULT_OK, intent); 
     getActivity().finish(); 
    } 

Bây giờ, tôi muốn kết quả của tôi trong lớp MainActivity. Vì vậy, tôi đã viết đoạn mã sau vào phương pháp onActivityResult:

if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_MAP) 
     { 
      tost("2"); 
      double lat=data.getExtras().getDouble("Latitude"); 
      double lng=data.getExtras().getDouble("Longitude"); 
      tost(lat + " -- " + lng); 
     } 

Vấn đề: các resultCode việc trở lại không phải là Activity.RESULT_OKIntent Tôi nhận được là null.

Việc cần làm? Cảm ơn

+0

mã nào bạn đang nhận được trên ActivityRessult –

+0

Bạn không được chuyển giá trị từ phân đoạn này sang hoạt động khác? – Raghunandan

+0

http://developer.android.com/guide/components/fragments.html. kiểm tra 'Giao tiếp với Hoạt động'. – Raghunandan

Trả lời

3

Hãy thử điều này:

Intent data = new Intent(); 
intent.putExtra("Latitude", passLatLng.latitude); 
intent.putExtra("Longitude", passLatLng.longitude); 
if (getParent() == null) { 
    setResult(Activity.RESULT_OK, data); 
} else { 
    getParent().setResult(Activity.RESULT_OK, data); 
} 
getActivity().finish(); 
+0

Thao tác này sẽ tạo một phiên bản mới trên 'MainActivity' trên ngăn tác vụ, thao tác này sẽ không quay trở lại người gọi ban đầu của hoạt động hiện tại. –

+0

@ micro.pravi hãy thử chỉnh sửa của tôi và xem. –

+0

Không hoạt động cho tôi –

9
getActivity().setResult(Activity.RESULT_OK, intent); 
getActivity().finish(); 

mã này không phải ở trong onDestroy. onDestroy xảy ra sau khi hoạt động đã kết thúc và onActivityResult được gọi.

mã này cần phải trong đoạn code đó đóng cửa hoạt động/mảnh, như trên chìa khóa lại ép, hoặc một nút đóng onClick

+0

Nó không phải là 'onDestroy'. Đó là 'onDestroyView' của đoạn và nó được gọi trước khi hoạt động được hoàn thành. –

4

có lẽ bạn cần phải làm rõ các phương thức ra mắt cho cả hai hoạt động này. thông thường chúng phải là "chuẩn", nếu có thuộc tính "singleTop" ... trong tệp kê khai hoạt động của bạn. bạn cần chú ý hơn.

+0

Trong kịch bản của tôi, nó phải là chế độ khởi chạy singleTask. Có cách nào giải quyết vấn đề này mà không thay đổi chế độ khởi chạy thành chuẩn không? –

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