2011-08-26 19 views
7

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

10

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 
} 
+1

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. –

6

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 { ... } 
+1

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. –

+1

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. :) –

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