【1】關於重寫的Class(這裏經過Numberpciker做爲事例)android
public class RakurakuNumberPicker extends NumberPicker {//[1]繼承想要重寫的控件 //[2]必須完成其自身的構造函數(三個都寫上最好) public RakurakuNumberPicker(Context context) { super(context); } public RakurakuNumberPicker(Context context, AttributeSet attrs) { super(context, attrs); } public RakurakuNumberPicker(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //[3]貼上你本身添加的方法or重寫的方法 @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT) { SettingMessageNotificationTimeActivity.getInstance() .updateArrowGuidanceUI(true); } if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT) { SettingMessageNotificationTimeActivity.getInstance() .updateArrowGuidanceUI(false); } return super.dispatchKeyEvent(event); } }
【2】調用處的方法ide
- XML文件的引用(注意姿式)函數
<com.android.mms.ui.RakurakuNumberPicker android:id="@+id/notice_time_picker" android:layout_width="wrap_content" android:layout_height="wrap_content" />
- Class文件使用ui
//聲明 private RakurakuNumberPicker mNoticeTimePicker; //綁定 mNoticeTimePicker = (RakurakuNumberPicker)findViewById(R.id.notice_time_picker);
【3】彩蛋(重寫的View調用調用處的方法)spa
- 小插曲,由於須要用到static方法,因此凡是涉及到的方法or成員都須要變成static的code
這顯然不能接受對象
最終比較好的實現方案繼承
- Activity開放一個得到其對象的靜態方法ci
protected static SettingMessageNotificationTimeActivity sMe; public static SettingMessageNotificationTimeActivity getInstance() { return sMe; }
- 自定義的空間拿到Activity對象而後調用其方法rpc
SettingMessageNotificationTimeActivity.getInstance().FunctionTest();