问题原因:
当popwindow调用时,其依附的parentview(下面函数的第一个参数)还没渲染创建完成,即parentview所在的activity没有完成。
jumpWidnow.showAtLocation( view, Gravity.BOTTOM, 0, 0 );
解决方法:
1,当activity添加到window完成后,再调用popwindow:
public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); Log.d("liudezu","====="+this.getClass().getName()+":onWindowFocusChanged"); if(hasFocus){ //showPopupJumpWindow(); } }onWindowFocusChanged(),当window焦点变换后调,当hasFocus = true时,表示获得焦点,即activity渲染完成,window获得焦点。
2,当popwindow附在的parentview,渲染完成后,再调用popwindow:
viewPager.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // do something showPopupJumpWindow(); viewPager.getViewTreeObserver().removeOnGlobalLayoutListener(this); } });当view渲染完成后,调用onGlobalLayout回调接口。在这里调用。