Bây giờ tôi đang sử dụng số ngẫu nhiên cho mã yêu cầu. Vì vậy, mỗi khi tôi thêm hoạt động mới cho startActivityForResult tôi cần phải kiểm tra tất cả các hoạt động khác để tránh va chạm. Có thể có bất kỳ thực hành nào để xác định giá trị, không thể va chạm theo thiết kế? Bạn nghĩ sao?Có đề xuất nào cho các giá trị mã yêu cầu trong Android không?
Trả lời
Nếu bạn vẫn cần kiểm tra kết quả của một hoạt động và muốn các cấu trúc được đánh bóng trực quan, vui lòng kiểm tra phương pháp này.
Khai báo lớp nội bộ bên trong lớp hoạt động của bạn:
class RequestCode {
static final int IMPORT = 100;
static final int WRITE_PERMISSION = 101;
}
Sử dụng mã khi bắt đầu hoạt động:
startActivityForResult(intent, RequestCode.IMPORT);
Kiểm tra kết quả:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RequestCode.IMPORT && resultCode == RESULT_OK) {
//...
}
}
tăng số được đảm bảo là không bị va chạm (cho đến khi nó kết thúc tốt đẹp). Nên thực sự không xảy ra trừ khi bạn sử dụng nhiều.
Bạn có thể thêm lớp vào dự án cung cấp cho bạn số. Ví dụ
public class GlobalStuff {
private static final AtomicInteger seed = new AtomicInteger();
public static int getFreshInt() {
return seed.incrementAndGet();
}
}
Bây giờ trong mã của bạn, bất cứ khi nào bạn cần sử dụng một số thay vì
public void doSomething() {
startActivityForResult(intentA, 342);
}
làm điều đó như
private static final int REQUEST_CODE = GlobalStuff.getFreshInt();
public void doSomething() {
startActivityForResult(intentA, REQUEST_CODE);
}
và bạn được an toàn mà bạn không sử dụng cùng một số hai lần. Ít nhất trong khi mã chạy trong cùng một Quy trình.
Vấn đề duy nhất là bạn không thể sử dụng những con số trong một tuyên bố switch
(như trong case REQUEST_CODE:
) vì chuyển đổi cần số được biết tại thời gian biên dịch
Bạn có thể sử dụng nó trong một câu lệnh switch với sự trợ giúp của một hashmap toàn cục, có lẽ? – creitve
Cách tiếp cận này hoạt động tuyệt vời .. cho đến khi thư viện của bên thứ ba quyết định làm điều tương tự. –
Trên thực tế bạn không cần phải kiểm tra tất cả các bạn Các hoạt động và nó không quan trọng nhiều nếu bạn có cùng giá trị trong các Hoạt động khác nhau.
Ý tưởng cho mã yêu cầu là bạn, trong Hoạt động X, trong onActivityResult()
có thể phân biệt kết quả của các yêu cầu khác nhau mà bạn đã bắt đầu với startActivityForResult()
.
Vì vậy, nếu bạn có 3 startActivityForResult()
cuộc gọi khác nhau trong hoạt động của bạn, bạn sẽ cần 3 mã yêu cầu khác nhau để có thể phân biệt giữa chúng trong onActivityResult()
- vì vậy bạn có thể biết được kết quả thuộc mà bắt đầu . Nhưng nếu bạn có một Hoạt động Y khác nơi bạn đang làm điều gì đó tương tự, không quan trọng khi mã yêu cầu có giống như trong Hoạt động X.
- 1. Truyền giá trị cho Yêu cầu JSON PUT trong C#
- 2. boost :: đề xuất thực hiện yêu cầu
- 3. Mô hình đề xuất cho mỗi yêu cầu có nhanh hơn I/O không chặn không?
- 4. Thêm tiêu đề tùy chỉnh vào yêu cầu TIdHttp, giá trị tiêu đề có dấu phẩy
- 5. Yêu cầu người dùng ESS/R đề xuất các mã elisp trong tệp .emacs
- 6. Cho phép các yêu cầu xuất xứ chéo trong Yesod
- 7. Yêu cầu "có thể băm" về giá trị Python
- 8. Giá trị nào để sử dụng cho các yêu cầu maxCquest, maxspare, minspare, maxchildren của FastCGI?
- 9. đọc các giá trị yêu cầu bài viết HttpHandler
- 10. Nhận giá trị tham số yêu cầu trong JSF
- 11. Yêu cầu Android AsyncTaskLoader truy xuất thêm dữ liệu
- 12. Cách đặt giá trị tiêu đề Máy chủ cho các yêu cầu SSL bằng cách sử dụng HttpWebRequest
- 13. MySQLDataReader truy xuất vấn đề giá trị Null trong C#
- 14. Lấy giá trị ID phiên từ yêu cầu JSF
- 15. Mục đích của giá trị "q" trong tiêu đề yêu cầu HTTP "Chấp nhận" là gì?
- 16. Thay đổi thông báo mặc định "Lỗi Xác thực: Giá trị được yêu cầu" thành "Giá trị được yêu cầu"
- 17. Android: OnBootReceiver: thu xuất khẩu không yêu cầu sự cho phép
- 18. Truyền các giá trị mảng trong yêu cầu HTTP trong .NET
- 19. Các chủ đề có được sử dụng lại giữa các yêu cầu trong ASP.Net không?
- 20. Có cách nào để đánh dấu mã để yêu cầu ReSharper không định dạng mã không?
- 21. Có cách nào để có được tất cả các tiêu đề yêu cầu trong một cuộc gọi jQuery $ .ajax không?
- 22. Tôi có thể lặp lại giá trị tiêu đề yêu cầu với nội dung phản hồi bằng vanilla Nginx không?
- 23. Lược đồ XML: Tôi có thể yêu cầu một số giá trị của thuộc tính nhưng vẫn cho phép các giá trị khác không?
- 24. Yêu cầu sao chép/di chuyển đối với các loại khóa/giá trị trong std :: map?
- 25. Django - lấy giá trị từ yêu cầu POST
- 26. URL yêu cầu HTTP có phải là một phần của tiêu đề yêu cầu HTTP không?
- 27. Đặt mã hóa ký tự yêu cầu của đầu vào JSF đã gửi giá trị cho UTF-8
- 28. Cho phép yêu cầu nguồn gốc chéo cho Android WebView
- 29. Android ngừng đề xuất các từ
- 30. Làm thế nào để yêu cầu BeanUtils bỏ qua các giá trị rỗng
tôi chỉ sử dụng số ngẫu nhiên (được tạo ra tại thời gian biên dịch) và không bao giờ có bất kỳ vấn đề nào - nhưng đây là một câu hỏi hay. – Booger