java - 如何删除使用 addContentView 添加的 View ?

标签 java android

我已使用 addContentView() 成功将 subview 添加到父 View 。但是当我尝试删除 View 时,它给了我一个空指针异常。

    //Working Code
    Button button1=(Button) findViewById(R.id.button1);
    button1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v)
        {
            getWindow().addContentView(getLayoutInflater().inflate(R.layout.customlayout, null),new FrameLayout.LayoutParams(
                    LayoutParams.MATCH_PARENT,
                    LayoutParams.WRAP_CONTENT ));
        }   
    });


    //Code not Working
    Button button2=(Button) findViewById(R.id.button2);
    button2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v)
        {
            View myView = findViewById(R.layout.customlayout);
            ViewGroup parent = (ViewGroup) myView.getParent();
            parent.removeView(myView);
        }   
    });

最佳答案

在 xml 中给你的根布局一个 id

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/InflateViewLinearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

</LinearLayout>

在代码中你可以做这样的事情

View viewToRemove= findViewById(R.id.InflateViewLinearLayout);
if (viewToRemove != null && (ViewGroup) viewToRemove.getParent() != null && viewToRemove instanceof ViewGroup)
      ((ViewGroup) viewToRemove.getParent()).removeView(viewToRemove);

关于java - 如何删除使用 addContentView 添加的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924668/

相关文章:

java - 检查矩形是否与文本相交

java - Spring JavaConfig 与注解类

android - 更改包名称后 Flutter App 无法正常工作

android - 我是否需要在 build.gradle 中添加源集以用于发布/调试 java 源文件夹?

java - 如何一次性替换一个字符串的多个子字符串?

android - 我可以将 Android 支持库从 27.1.1 更新到 AndroidX 1.0.0 吗?

android - 在工具栏中显示进度条

java - 同步发送视频到AppSink

java - 使用 JAVA 在 HANA 中插入数组

java - 如何在Java/MySQL中查询继承的类类型?