【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();