首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

请教在扩展 extends view中怎么在引用其的程序中触发事件

2013-12-19 
请问在扩展 extends view中如何在引用其的程序中触发事件?本帖最后由 itakeblue 于 2013-12-13 10:13:47

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

}
});

热点排行