The specified child already has a parent. You must call removeView
对于经常看见的removeView()异常,网上的一些方法给出,
- LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
- LinearLayout parent = (LinearLayout) inflater.inflate(R.layout.main, null);
- ImageView child = (ImageView)parent.findViewById(R.id.child);
- setContentView(parent);
- 把上04row 改为setContentView(child);
- 并在03row 加入parent.removeView(child);的方法虽然解决了,但是view被over了
在这里我找了一种好办法可以避免出现此种异常。
- 在布局中加入
- <com.example.db2.FileBrowser xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/filebrowser" >引入外部xml文件 - 接下来
- fileBrowserView = getLayoutInflater().inflate(R.layout.select_photo,null);
//fileBrowser
fileBrowser = (FileBrowser) fileBrowserView.findViewById(R.id.filebrowser);
fileBrowser.setOnFileBrowserListener(this);
//文件FileBrowser对象已经获得,
alertDialog = new AlertDialog.Builder(this)
.setTitle("选择头像")
.setIcon(R.drawable.select_photo)
.setView(fileBrowserView)
.setPositiveButton("关闭", null)
.create();
alertDialog.show();
即可加载自定义布局。