android 从 alertdialog 中删除 View

标签 android view android-alertdialog

您好,我有一个 MainActivity 类,其中有一个由 rss 项目填充的 ListView 。当我单击项目列表时,我的应用程序会显示一个警报对话框,我可以在消息框中看到项目详细信息。我的问题是,在我关闭它并打开一个新项目时显示 alertdialog 之后,我的应用程序崩溃并给我这个错误:

FATAL EXCEPTION: main.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

这是我的java类:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listview = (ListView) findViewById(R.id.listView);

        wv = new WebView(this);

        try {
            url = new URL("http://www.unikore.it/index.php/ingegneria-informatica-home?format=feed");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        new ReadRssTask().execute(url);

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
                OptionDialog = new AlertDialog.Builder(MainActivity.this).create();
                OptionDialog.setTitle(listview.getItemAtPosition(position).toString());
                s = rssItems.get(position).getDescription();
                if(s.contains("href=")){
                    s.substring(0,s.indexOf("</div>"));
                    wv.loadData(s, "text/html", "UTF-8");
                    wv.setWebViewClient(new WebViewClient() {
                        @Override
                        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                            view.loadUrl(url);
                            return true;
                        }
                    });
                    OptionDialog.setView(wv);
                }else {
                    OptionDialog.setMessage(s.replaceAll("<[^>]*>", ""));
                }
                OptionDialog.show();
            }
        });
    }

我尝试使用 OptionDialog.dismiss() 方法,但应用还是崩溃了。

谢谢

最佳答案

在访问对象之前移动 WebView 的实例化。

s = rssItems.get(position).getDescription();
if(s.contains("href=")){ 
  wv = new WebView(this);
  wv.loadData(s, "text/html", "UTF-8");
  // other code

关于android 从 alertdialog 中删除 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947911/

相关文章:

java - 不能将下划线作为参数的方法重构到 lambda 中吗?

ios - 如何添加 View (以及收缩或拉伸(stretch)其他 View )iOS

android - 对话框打开另一个对话框

java - 在不同监听器之间切换

android - Retrolambda:使用带有 retrolambda 的 lambda 表达式时,Lint 崩溃

java - UIL LinearBackground 图像不起作用

android - 错误 :(30, 13) 无法解析 : com. android.support.constraint :constraint-layout:1. 0.0-alpha4

asp.net-mvc - ASP.NET MVC 中的强类型 View 是什么

android - 动态 inflatedView 的问题

java - DialogFragment 中未调用 OnCancelListener