Android 系统EditText获取焦点并且设置相关信息

任何的控件都是基于View类的,所以EditText的控件监听也是在View.java中实现的


1、在frameworks/base/core/java/android/view/View.java中注册广播接收填充的EditText信息


private Handler mscanHandler = new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);


View mFocus = getRootView().findFocus();
//Log.i("
123","hava scan message "+mFocus);
if(mFocus !=null&&mFocus instanceof EditText){

EditText mEdittext = (EditText) mFocus;
if(mEdittext.getText().toString().isEmpty()){
mEdittext.setText(msg.getData().getString("result"));
}else{
//mEdittext.setText("data");
}
}
}

};


BroadcastReceiver scanReceiver = new BroadcastReceiver(){


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String
testinfo = intent.getExtras().getString("result");

Message mMessage = new Message();
Bundle mBundle = new Bundle();
mBundle.putString("result", testinfo);
mMessage.setData(mBundle);
mscanHandler.sendMessage(mMessage);
}

};


private void init
testinfo(){


IntentFilter mIntentFilter = new IntentFilter("android.
test.info");


mContext.registerReceiver(
testReceiver, mIntentFilter);
}


在onFocusChanged函数中注册 inittestinfo()广播接收器


    protected void onFocusChanged(boolean gainFocus, @FocusDirection int direction,
            @Nullable Rect previouslyFocusedRect) {
        if (gainFocus) {
            sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
        } else {
            notifyViewAccessibilityStateChangedIfNeeded(
                    AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED);
        }
//add test focus code
if(gainFocus){
inittestinfo();
}

..........

.........

}

且在clearFocusInternal函数中 取消注册广播接收器

mContext.unregisterReceiver(scanReceiver);


测试在你的APK中可以发送广播看是否所有的EditText会变成12345

Intent mIntent = new Intent("android.test.info");
mIntent.putExtra("result", "12345");
sendBroadcast(mIntent);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值