读书人

请教在扩展 extends view中怎么在引用

发布时间: 2013-12-19 00:33:34 作者: rapoo

请问在扩展 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

}
});

读书人网 >Android

热点推荐