popwindow初始时弹出引发的Unable to add window --token null is not valid

来源:互联网 发布:java开发工程师累不累 编辑:程序博客网 时间:2024/05/16 11:15

今天在做项目的时候遇到了这个问题,当时我是这样写的

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);CommonUtils.initData(this);setContentView(R.layout.activity_search);mContext = this;httpInstance = new HttpInstance();initView();historyPop(); historyPop.showAsDropDown(findViewById(R.id.search_layout));  }



然后发现会报这个错误,这个错误有可能是在activity之外
showAsDropDown,或者是在Activity的onCreate()函数里面调用了showAsDropDown,多半是后者,由于你的popupwindow要依附于一个activity,而activity的onCreate()还没执行完,没有pop可以弹出。

改成如下就好了,用一个线程或者在某个事件里进行。

private Handler popupHandler = new Handler(){      @Override      public void handleMessage(Message msg) {          switch (msg.what) {          case 0:              historyPop.showAsDropDown(findViewById(R.id.search_layout));              historyPop.update();              break;          }      }        };  

然后在onCreate方法中这样写

popupHandler.sendEmptyMessageDelayed(0, 100); 

0 0