android 从警报对话框中删除视图

android remove view from alertdialog

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

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

这是我的 java class:

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