Nhiều hoạt động giống nhau trênCreateOptionsMenu, onOptionsItemSelected và onKeyDown. Khi tôi thực hiện một thay đổi, tôi phải thực hiện nó trong mọi hoạt động (thời gian làm việc * số hoạt động). Có cách nào để tái sử dụng mã (ví dụ viết tất cả ba phương thức ở một nơi và đặt một tham chiếu đến nó trong mọi hoạt động)?Nhiều hoạt động, giống hệt nhau trênCreateOptionsMenu, onOptionsItemSelected và onKeyDown. Tôi có thể sử dụng lại mã không?
Trả lời
Chắc chắn, chỉ cần tạo lớp học Activity
của riêng bạn mà tất cả các lớp học của bạn được kế thừa từ đó.
Một chút như thế này - tạo ra một lớp cơ sở trừu tượng được thừa kế từ Activity
và thực hiện hành vi phổ biến:
public abstract class MyBaseActivity extends Activity {
public Menu onCreateOptionsMenu(Menu menu) {
/* do common menu stuff */
}
}
Sau đó thực hiện các hoạt động cá nhân của bạn kế thừa từ lớp cơ sở của bạn:
public class MyActivity extends MyBaseActivity {
// inherits behaviour from MyBaseActivity
// so don't need to re-implement onCreateOptionsMenu
}
Chắc chắn, tạo một hoạt động cơ sở và viết mã của bạn trong đó.
public class MenuActivity extends Activity {
// Menu stuff goes here
}
Sau đó, mở rộng hoạt động riêng biệt của bạn từ đó.
public class MyActivity1 extends MenuActivity { ... }
public class MyActivity2 extends MenuActivity { ... }
public class MyActivity3 extends MenuActivity { ... }
Tôi không thể chấp nhận hai câu trả lời là câu trả lời đúng vì vậy tôi sẽ chỉ bình chọn cho bạn. –
Không vấn đề gì, chúng tôi đã đăng cùng một lúc. Tôi nghĩ rằng Dave đã cho tốt hơn ở đây anyway (chi tiết hơn), do đó, chấp nhận câu trả lời của mình. :) –
- 1. "đang sử dụng" hai thư viện khác nhau có chức năng gần như giống hệt nhau
- 2. Tại sao tôi không thể gán thay thế lẫn nhau với hai cấu trúc có nội dung giống hệt nhau?
- 3. Cách sử dụng onKeyDown khác nhau trong đoạn của cùng một hoạt động
- 4. giống hệt (?) C# và VB.NET LINQ truy vấn trả lại kết quả khác nhau
- 5. Nhấp vào biểu tượng ứng dụng không kích hoạt onOptionsItemSelected()
- 6. Mẫu phù hợp với các giá trị giống hệt nhau
- 7. sử dụng hàm băm để xác định xem 2 datafram giống hệt nhau (PHẦN 01)
- 8. giữ 2 mysql dbs giống hệt nhau trên hai máy
- 9. Fragment hoạt động đánh bắt onKeyDown và sử dụng trong đoạn
- 10. Tôi có thể sử dụng cStringIO giống như StringIO không?
- 11. Mã số 65001 và utf-8 có giống nhau không?
- 12. Các ký tự giống hệt nhau trong Unicode
- 13. ClearTimeout và clearInterval có giống nhau không?
- 14. Phát hiện xem hai hình ảnh có giống hệt nhau không
- 15. xác định hoạt ảnh và trình kích hoạt làm tài nguyên có thể sử dụng lại?
- 16. Tôi có thể sử dụng lại HttpWebRequest không?
- 17. Tại sao so sánh chuỗi bash của tôi với hai chuỗi giống hệt nhau luôn sai?
- 18. Có thể có nhiều hoạt động của trình chạy không?
- 19. So sánh các chuỗi giống hệt cho tôi false
- 20. Phát hiện hình ảnh gần giống hệt
- 21. Statemachine và statechart có giống nhau không?
- 22. Các cụm hadoop có chạy trên phần cứng giống hệt nhau không?
- 23. Bạn có thể có 2 bảng với cấu trúc giống hệt nhau trong một lược đồ DB tốt không?
- 24. Tôi có thể sử dụng lại LayoutPrams với ViewGroup.addView không?
- 25. Tôi có thể sử dụng nhiều "bằng" không?
- 26. Đặt lại repo cục bộ giống hệt repo từ xa
- 27. Các nguồn Java giống hệt nhau được biên dịch thành các lớp nhị phân khác nhau
- 28. kiểm tra xem các chương trình 2 R có giống hệt nhau
- 29. Tại sao Oracle trả về chuỗi cụ thể nếu các giá trị 'orderby' giống hệt nhau?
- 30. Làm cách nào để tạo mã hóa AES giống hệt nhau giữa Java và Objective-C (iPhone)?
Tất nhiên, cảm ơn bạn! Cả hai câu trả lời là chính xác và được viết vào thời gian chính xác, vì vậy tôi sẽ chấp nhận câu trả lời của bạn là câu trả lời đúng (ít danh tiếng hơn @alextsc) và trả lời câu trả lời của alextsc. –