按e弹出我的电脑android,自定义键盘使用popupwindow弹出有关问题

自定义键盘使用popupwindow弹出问题

public class MainActivity extends Activity {

private SafeEditView pwdSEV;

private Button loginBT;

private boolean run = true;

private int id = 0;

private PopupWindow popupWindow;

private KeyboardView mInputView;

private Keyboard mQwertyKeyboard;

View view;

boolean is = false;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//pwdSEV = (SafeEditView)findViewById(R.id.passwd);

loginBT = (Button)findViewById(R.id.loginbt);

loginBT.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if(!is){

popupWindow.setBackgroundDrawable(new BitmapDrawable());

popupWindow.setFocusable(false);

popupWindow.setTouchable(true);

popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);

//popupWindow.showAsDropDown(view);

popupWindow.setOutsideTouchable(true);

}else{

popupWindow.dismiss();

}

is = !is;

}

});

mQwertyKeyboard = new Keyboard(getApplicationContext(), R.xml.qwerty);

view = LayoutInflater.from(MainActivity.this).inflate(

R.layout.safe_keyboard, null);

mInputView = (KeyboardView) view.findViewById(R.id.keyboard_view);

mInputView.setKeyboard(mQwertyKeyboard);

popupWindow = new PopupWindow(view,

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);

//设置可以获取焦点,否则弹出菜单中的EditText是无法获取输入的

popupWindow.setFocusable(true);

//这句是为了防止弹出菜单获取焦点之后,点击activity的其他组件没有响应

popupWindow.setBackgroundDrawable(new BitmapDrawable());

}

@Override

protected void onResume() {

// TODO Auto-generated method stub

super.onResume();

}

}

代码如上,自定义键盘可以弹出来,但是一点击就会出现下面的报错,哪位帮忙解答一下。  换个布局就不会出错。

04-07 14:40:07.725: E/AndroidRuntime(19100): java.lang.NullPointerException

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.inputmethodservice.KeyboardView.onModifiedTouchEvent(KeyboardView.java:1211)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.inputmethodservice.KeyboardView.onTouchEvent(KeyboardView.java:1151)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.view.View.dispatchTouchEvent(View.java:3939)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:902)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:902)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.widget.PopupWindow$PopupViewContainer.dispatchTouchEvent(PopupWindow.java:1521)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2364)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.view.ViewRoot.handleMessage(ViewRoot.java:2022)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.os.Handler.dispatchMessage(Handler.java:130)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.os.Looper.loop(Looper.java:384)

04-07 14:40:07.725: E/AndroidRuntime(19100): at android.app.ActivityThread.main(ActivityThread.java:3971)

04-07 14:40:07.725: E/AndroidRuntime(19100): at java.lang.reflect.Method.invokeNative(Native Method)

04-07 14:40:07.725: E/AndroidRuntime(19100): at java.lang.reflect.Method.invoke(Method.java:538)

04-07 14:40:07.725: E/AndroidRuntime(19100): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)

04-07 14:40:07.725: E/AndroidRuntime(19100): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:732)

04-07 14:40:07.725: E/AndroidRuntime(19100): at dalvik.system.NativeStart.main(Native Method)

------解决思路----------------------

ndroid.inputmethodservice.KeyboardView.onModifiedTouchEvent(KeyboardView.java:1211)

空异常啊,你看看这行为什么是空的对象。

KeyboardView

mInputView = (KeyboardView) view.findViewById(R.id.keyboard_view);

mInputView.setKeyboard(mQwertyKeyboard);

------解决思路----------------------

貌似id没获取到?

------解决思路----------------------

你这个还是获取焦点的问题,popupWindow弹出来后,他获得了焦点,你在EditText中加个监听:setOnFocusChangeListener;

注意:你可以判断PopupWindow.isshow(),然后,添加监听setOnFocusChangeListener,dismiss就失去焦点,如果失去焦点的时候有异常,那么尝试在失去焦点的时候,让其他控件获得焦点。

http://dwtedx.com/itshare_313.html 按这里的方法应该可以解决。

------解决思路----------------------

NullPointerException 这个异常解决思路,先找出空指针的变量,再看是因为什么成为空指针就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值