PopupWindow B 显示在 PopupWindow A 中,B的锚点是A中的一个Widget,报异常为:08-01 06:18:18.214: ERROR/AndroidRuntime(888): android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRoot$W@44ef1b68 is not valid; is your activity running?麻烦各位大侠们帮我看看咯,谢谢。
解决方案 »
- android报错:SWT folder does not exist
- SurfaceView播放视频时,视频画面没有占满整个视图窗口
- android 平台上, 应用开发工具有哪些? 一般用什么版本?
- webView zoomin zoomout 不好使
- android连接蓝牙键盘的问题
- 请问 如何实现音乐播放的快进?
- android如何读写/data/data文件
- android TextView中显示表情到边界时会有显示一半的情况
- android ndk编译的C++可执行程序已经能够运行了,但如何实现在android系统上自启动呢?
- Android开发 ,如何读取AndroidMainfest.xml里面的节点信息
- 求教android安装问题,我安装SDK2.0和1.5都出现这个问题了。
- android 怎么实现通过按钮使当前TextView显示另外一个包里的数组
原因应该是widget只是一个view,它需要有host宿主
测试代码public class TestActivity extends Activity {
private PopupWindow mPop1;
private PopupWindow mPop2; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button btnOpen = (Button) findViewById(R.id.btnOpen);
LayoutInflater inflater = getLayoutInflater();
View content1 = inflater.inflate(R.layout.popup,null);
View content2 = inflater.inflate(R.layout.popup,null);
//PopupWindow里面到按钮
final Button btn1 = (Button) content1.findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
//如果第一个参数为btn1就报错,为btnOpen就不会,但是,要求是使用btn1
mPop2.showAsDropDown(btn1, 20, 40);
}
}); mPop1 = new PopupWindow(content1, 200 , 200);
mPop2 = new PopupWindow(content2, 300, 400);
btnOpen.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "dd",
Toast.LENGTH_SHORT).show();
mPop1.showAsDropDown(btnOpen, 0, 0);
}
}); }
}