2011-11-24 13 views
8

Tôi hoàn toàn mới phát triển Android (Java) và tôi rất vui mừng về nó! Hướng dẫn dành cho nhà phát triển của Google thật tuyệt vời và tôi đã học được rất nhiều điều trong một thời gian ngắn. Nó thậm chí còn giữ cho tôi tỉnh táo suốt đêm;)Mở rộng lớp học cho hoạt động

Hôm nay tôi đã trải qua thực đơn và có điều gì đó mà tôi không thể hiểu được. Đó là về việc mở rộng các lớp học. Hướng dẫn nói:

Mẹo: Nếu ứng dụng của bạn có chứa nhiều hoạt động và một số trong số họ cung cấp cùng Tùy chọn Menu, hãy cân nhắc tạo một hoạt động mà thực hiện không có gì ngoại trừ onCreateOptionsMenu() và onOptionsItemSelected() phương pháp. Sau đó, mở rộng lớp này cho mỗi hoạt động sẽ chia sẻ cùng một Menu Tùy chọn. Bằng cách này, bạn có để chỉ quản lý một bộ mã để xử lý các tác vụ menu và mỗi lớp con cháu thừa kế các hành vi menu.

Điểm Tôi không hiểu là làm thế nào để mở rộng một lớp ... Hãy nói rằng tôi có một MainActivitySubActivity. Tôi muốn có cùng một menu trong cả hai hoạt động vì vậy tôi tạo một MainMenuActivity. Làm cách nào để mở rộng lớp học này cho cả hai hoạt động?

Có, tôi đã tìm kiếm trên mạng nhưng không thể tìm thấy bất kỳ tiện ích nào có thể sử dụng được. Tôi thực sự muốn hiểu nó vì vậy tôi hy vọng bất cứ ai có thể giúp tôi với một số lời giải thích samplecode +. Cảm ơn bạn trước !!

+0

Ngoài ra kiểm tra [này] (http: // stackoverflo w.com/questions/7618227/can-i-combine-my-code-into-some-kind-of-global-activity/7618263#7618263) giống như những gì bạn đang nói đến. –

Trả lời

18

gì họ có ý nghĩa như sau:

Thông thường bạn sẽ phải:

public class MyActivity extends Activity{...} 

Nếu bạn có 4-5-6 ... của những hoạt động này, và mỗi người trong số họ sử dụng menu tương tự mã, bạn chỉ có thể sao chép và dán mã 4-5-6 .. lần. Hoặc bạn có thể làm điều này:

public class BaseActivity extends Activity{ 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     //My menu code 
    } 
} 

Và sử dụng lớp này cho bạn 4-5-6 ... Hoạt động:

public class MyActivity extends BaseActivity{...} 

Bằng cách này bạn không cần phải sao chép mã tạo menu của bạn vào tất cả các hoạt động của bạn, và hơn thế nữa, bạn không cần phải chỉnh sửa 4-5-6 ... lớp học để chỉnh sửa một chút tạo trình đơn. Mã menu bây giờ cũng có trong MyActivity.


Bạn cũng có thể xem here, giải thích ý nghĩa của phương tiện extends.

+0

Cảm ơn bạn rất nhiều !! Bây giờ tôi hiểu rồi, nó dễ hơn tôi nghĩ !! – MartijnG

9

Thực sự khá đơn giản.

MainMenuActivity

public class MainMenuActivity extends Activity { 
    //Override or add whatever functionality you want other classes to inherit. 
} 

MainActivity

public class MainActivity extends MainMenuActivity { 
    //Add what is specific to MainActivity. The menu will be inherited from MainMenuActivity. 
} 

SubActivity

public class SubActivity extends MainMenuActivity { 
    //Add what is specific to SubActivity. The menu will be inherited from MainMenuActivity. 
}