android学习中遇见的问题(2)

1.android.view.WindowManager$BadTokenException: Unable to add window — token null
分析原因:导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。
解决方法:将new AlertDialog.Builder(Context context)中的参数用Activity.this(Activity是你的Activity的名称)来填充就可以正确的创建一个Dialog了。

2.对话框设置了setOnClickListener,在onClick里做dismiss()处理。但是只能点在对话框上,才能触发onClick,点在对话框之外就没有反应。
当前的activity里的onTouch也没有收到任何消息。需要的效果是:如果弹出了我的对话框,那么只要在屏幕任何地方点一下,都可以让对话框消失。
分析原因:一般使用了AlertDialog对话框都是封装好的。因此,要使用onTouchEvent事件方法,就需要继承AlertDialog类。
解决方法:
public class MyDialog extends AlertDialog
{
public MyDialog(Context context)
{
super(context);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
// 关闭显示的对话框
dismiss();
return super.onTouchEvent(event);
}
}

3.手动呼出和隐藏键盘2:
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
View view = ComposeMessageActivity.this.getCurrentFocus();
if (view != null) {
// show the keyboard
imm.showSoftInput(view, 0);
//hide the keyboard
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值