请问在扩展 extends view中如何在引用其的程序中触发事件?
本帖最后由 itakeblue 于 2013-12-13 10:13:47 编辑 我有一个扩展的edittext,如下:
test.class
public class test extends EditText {
public test(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public boolean onKeyPreIme (int keyCode, KeyEvent event)
{
if (event.getKeyCode() == android.view.KeyEvent.KEYCODE_BACK){
//to do something
}
return super.onKeyPreIme(keyCode, event);
}
}
其中用了onKeyPreIme 来先于软键盘捕获到back键的输入,然后在下面的程序中使用:
touchpad.class
private test editText1;
@Override
public void onCreate(Bundle savedInstanceState) {
editText1 = (test) findViewById(R.id.editText1);
}
public void back_pressed(){
//some code
}
现在我想知道的是,如何将 点击返回键 这个动作从 test.class onKeyPreIme() 传到 touchpad.class 并触发 back_pressed(), 谢谢!
[解决办法]
你把touchpad这个activity穿个你的edittext,调用它的方法,或者传个handle给textview,通过handle去调用
[解决办法]
Intent intent = new Intent();
intent.setAction("w.w.xxxx");
intent.putExtra("data", 5555);
sendBroadcast(intent);
//-------------------
public class DataReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
double data = intent.getDoubleExtra("data", 0);
tv.setText("的数据为:" + data);
}
}
[解决办法]
test
public class test extends EditText {
public test(Context context, AttributeSet attrs) {
super(context, attrs);
}
OnKeyBackPressed keybackpressed = null;
public void SetOnKeybackPressed(OnKeyBackPressed k) {
keybackpressed = k;
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (event.getKeyCode() == android.view.KeyEvent.KEYCODE_BACK) {
// to do something
if (keybackpressed != null)
keybackpressed.back_pressed();
}
return super.onKeyPreIme(keyCode, event);
}
public static interface OnKeyBackPressed {
public void back_pressed();
}
}
touchpad
editText1.SetOnKeybackPressed(new OnKeyBackPressed() {
@Override
public void back_pressed() {
// ToDo something
}
});