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

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

2012-06-27 
android学习中遇见的问题(2)1.android.view.WindowManager$BadTokenException: Unable to add window — to

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

}

热点排行