Android PopupWindow用法(一)
来源:互联网 发布:域名加www 编辑:程序博客网 时间:2024/05/22 13:33
Section1
代码如下
public class MainActivity extends AppCompatActivity { private LinearLayout ll_main; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ll_main = (LinearLayout) findViewById(R.id.ll_main); PopupWindow popupWindow = new PopupWindow(this); popupWindow.setContentView(View.inflate(this,R.layout.layout_popup,null)); findViewById(android.R.id.content); popupWindow.showAsDropDown(ll_main); }}
Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
Section2 报错了,修改代码如下
private LinearLayout ll_main;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ll_main = (LinearLayout) findViewById(R.id.ll_main);}@Overridepublic void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); PopupWindow popupWindow = new PopupWindow(this); popupWindow.setContentView(View.inflate(this,R.layout.layout_popup,null)); findViewById(android.R.id.content); popupWindow.showAsDropDown(ll_main);}
这次是不报错了,但是popupwindow还是没有出来。
Section3
难道是因为inflate的时候没有指定parent?
public class MainActivity extends AppCompatActivity { private LinearLayout ll_main; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ll_main = (LinearLayout) findViewById(R.id.ll_main); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); PopupWindow popupWindow = new PopupWindow(this); popupWindow.setContentView(View.inflate(this, R.layout.layout_popup, ll_main)); findViewById(android.R.id.content); popupWindow.showAsDropDown(ll_main); }}
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
更不对,因为这个view并不是ll_main的child,ll_main作为parent显然是错误的
Section4
到底是什么原因,其实原因很简单,因为popWindow new 的时候需要指定宽高,
我们继续修改代码
public class MainActivity extends AppCompatActivity { private LinearLayout ll_main; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ll_main = (LinearLayout) findViewById(R.id.ll_main); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); PopupWindow popupWindow = new PopupWindow(100,100); popupWindow.setContentView(View.inflate(this,R.layout.layout_popup,null)); findViewById(android.R.id.content); popupWindow.showAsDropDown(ll_main); }}
这次终于出来了。
阅读全文
0 0
- Android PopupWindow用法(一)
- Android PopupWindow用法(三) PopupWindow 的show方法
- Android PopupWindow用法(五) showAtLocation
- Android popupWindow 用法
- android PopupWindow的用法
- android—PopupWindow用法
- android popupwindow用法
- Android中Popupwindow的用法
- Android中PopupWindow的用法
- 关于Android的PopupWindow用法
- Android中PopupWindow的用法
- Android开发PopupWindow showAtLocation用法
- Android开发PopupWindow.showAtLocation用法
- Android开发PopupWindow showAtLocation用法
- 浅谈android之popupWindow用法
- Android PopupWindow 简单之用法
- Android开发PopupWindow showAtLocation用法
- Android中popupwindow的用法
- android之interpolator的用法详解
- Unity中使用Loom工具,Unity多线程学习
- 四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
- 项目中遇到的问题总结
- 20170925_HTTP协议的五种状态
- Android PopupWindow用法(一)
- 如何生成背景颜色带渐变效果的按钮
- RGB颜色查询表
- HashMap源码--(三)put方法
- Android 小米手机开发APP图标更换后还显示原来的图标
- 优化或修改CentOS最大连接数限制
- CIR,CBS,EBS,PIR,PBS令牌桶概述
- Android RuntimePermissions运行时权限:批量权限申请
- 189. Rotate Array