2015-04-29 4 views
1

Привет, у меня есть класс MainActivity, где у меня есть список, заполненный rss-элементами. Когда я нажимаю на список элементов, мое приложение показывает мне alertdialog, где я могу видеть в окне сообщения информацию о деталях. Моя проблема заключается в том, что после того, как я показать alertdialog, когда я закрыть его и открыть новый элемент моего приложения аварию, давая мне эту ошибку:android remove view from 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() метода, но Повреждение приложений в любом случае.

Благодаря

ответ

1

перемещение на создание экземпляра WebView только перед получением доступа к объекту.

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

спасибо! наконец, это сработало для меня! ;) – xXJohnRamboXx

+0

приветствуются – Blackbelt