`
shadow88
  • 浏览: 10781 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

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);

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics