Sự khác nhau giữa startActivityForResult()
vs getActivity().startActivityForResult()
trong phân đoạn Android là gì? Và sự khác biệt về hành vi trong onActivityForResult()
khi được gọi trong Phân đoạn là gì?startActivityForResult() vs getActivity(). StartActivityForResult() trong Android Fragment
Trả lời
startActivityForResult()
phải xử lý nó từ fragment
's onActivityForResult()
getActivity().startActivityForResult()
phải xử lý nó từ activity
' s onActivityForResult()
Về cơ bản:
Nếu bạn đang ở trên một fragment
và bạn muốn xử lý kết quả trên fragment
, sử dụng onActivityForResult()
, othe rwise nếu bạn muốn xử lý nó từ activity
của đoạn, sử dụng getActivity.startActivityForResult()
Chúng tôi có thể sử dụng startActivityForResult()
bên trong Hoạt động và getActivity().startActivityForResult()
bên trong Phân đoạn.
Inshort, để có được bối cảnh hoạt động, chúng tôi đang sử dụng nó với getActiviy()
.
Thay vào đó, chúng ta có thể gọi onActivityResult đặc biệt Fragment của() như dưới đây từ Actiivty .:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
for (Fragment fragment : getChildFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
Nếu chúng ta đặt nó để biết thêm chi tiết sau đó,
Nếu Bạn sẽ gọi startActivityForResult()
từ Fragment của bạn, requestCode sẽ được thay đổi bởi Activity sở hữu Fragment.
Vì vậy, Nếu bạn muốn nhận được resultCode đúng trong hoạt động của bạn, bạn có thể thử như sau:
KHÔNG SỬ DỤNG: (trong trường hợp như vậy):
startActivityForResult(intent, 1);
SỬ DỤNG:
getActivity().startActivityForResult(intent, 1);
Hy vọng nó sẽ giúp ..!
thực sự tôi đã sử dụng 'startActivityForResult()' trong đoạn mà không sử dụng 'getActivity()'. Đó là lý do tại sao tôi hỏi sự khác biệt về hành vi. –
Xem @ j.elmer Không có sự khác biệt nào trong số đó. Nhưng, Một chút khác biệt là chúng ta có thể sử dụng getActivity(). StartActivityForResult() chỉ trong đoạn để có được Ngữ cảnh hoạt động. –
Toàn bộ điểm của một phương thức 'startActivityForResult' riêng biệt trong Fragment là để tránh phải trải qua tất cả các Fragments trong onActivityResult của Activity. Đó chính là điều sai trái để làm. – ianhanniballake
Không khác biệt ở tất cả ... Nhưng Một sự khác biệt chút là getActivity() startActivityForResult.() chỉ có thể gọi từ một mảnh :)
startActivityForResult từ cuộc gọi đoạn startActivityForResult hoạt động vùng chứa của nó. Vì vậy, đối với Fragment: -
Bắt đầu cuộc gọiActivityForResult (Intent, int) từ hoạt động chứa của đoạn.
Trong khi bạn sử dụng nó trực tiếp một số thay đổi nhất định có thể được thực hiện trên mã yêu cầu.Và bạn sẽ gặp phải một số vấn đề với mã yêu cầu sửa đổi gần đây. Bạn có thể xem xét This Thread.
Bạn phải thực hiện cuộc gọi có tham chiếu đến Activity
, vì startActivityForResult(Intent intent, int requestCode)
là phương thức được chỉ định trong Activity
.
Vì vậy, nếu bạn gọi từ YourActivity
, nó đã có một tham chiếu của Activity
như:
YourActivity extends AppCompatActivity (which is subclass of `Activity`)
Nhưng nếu bạn đang gọi nó từ YourFragment
bạn cần phải xác định Activity
tham khảo, mà trong trường hợp này sẽ là Hoạt động có chứa YourFragment
; do đó chúng tôi sử dụng getActivity()
và sau đó kích hoạt startActivityForResult()
"startActivityForResult()" hoạt động trên các lớp Hoạt động. khi bạn đang ở trong lớp Hoạt động, bạn có thể trực tiếp sử dụng phương pháp này. khi bạn đang ở trong phân đoạn, bởi vì phân đoạn tạo ra trên Hoạt động, trước tiên bạn nên có được hoạt động phân đoạn dựa trên nó. có nghĩa là:
//in fragment class:
Activity activity = this.getActivity();
bây giờ bạn có hoạt động và tôi đã nói, bạn có thể sử dụng "startActivityForResult()" trên hoạt động bạn nhận được từ phân đoạn.
activity.startActivityForResult();
hy vọng sẽ giúp.
- 1. startActivityForResult bên trong startActivityForResult
- 2. điều hướng trong ứng dụng Android với FLAG_ACTIVITY_NO_HISTORY & startActivityForResult
- 3. Ý nghĩa của requestCode trong startActivityForResult
- 4. Tương tự của startActivityForResult cho Dịch vụ
- 5. Điều khiển luồng chương trình Android khi có lệnh startActivityForResult
- 6. iOS: Cách đạt được hành vi như startActivityForResult của Android
- 7. startActivityForResult sử dụng cho nhiều hoạt động
- 8. sử dụng startActivityForResult từ không hoạt động
- 9. bên trong Hộp thoại Android, cách thiết lập onActivityResult cho startActivityForResult?
- 10. Tại sao resultCode = -1 ở đây sau StartActivityForResult?
- 11. Tại sao phương pháp oncreate được gọi sau startActivityForResult?
- 12. startActivityForResult không hoạt động đúng với launchMode singleInstance
- 13. Android Fragment onCreateView vs. onActivityCreated
- 14. Android Fragment vs. Activity Group
- 15. Fragment getActivity() trả về null trong Activity JUnit test
- 16. getSherlockActivity() vs getActivity()
- 17. Làm thế nào để sử dụng startActivityForResult() thông qua một DialogFragment?
- 18. Android: Cách gọi hàm getActivity() trong OnItemClickListener()?
- 19. Có bất kỳ API Android nào để cung cấp Ngày giờ làm đầu vào từ người dùng (startActivityForResult) không?
- 20. chúng ta có thể gọi startActivityForResult từ bộ điều hợp không?
- 21. Hoạt động bắt đầu với startActivityForResult() không trở về gọi Hoạt động
- 22. ArrayAdapter in Fragment - Android
- 23. startActivityForResult và Intents Extras, có vẻ như tính năng bổ sung không được đẩy lùi
- 24. cách chúng tôi có thể sử dụng startActivityforResult() cho mục đích Email?
- 25. Giao tiếp Fragment-Fragment trong Android
- 26. Android childfragments from viewpager getActivity trả về null
- 27. Android ListView trong Fragment
- 28. MapView android trong Fragment
- 29. onActivityResult() không được gọi khi Activity bắt đầu từ Fragment
- 30. Điểm khác nhau giữa getContext và getActivity từ Fragment trong thư viện hỗ trợ là gì?
https://developer.android.com/reference/android/app/Activity.html#onActivityResult(int, int, android.content.Intent) và https://developer.android.com/training/basics/ intents/result.html –
Bạn có biết rằng có tài liệu về phát triển Android không? –