2013-07-04 2 views
0

Я пытаюсь написать программу для синтаксического анализа данного xml. Тем не менее, он выдает это сообщение об ошибке: «вызвано следующими причинами: android.view.ViewRootImpl $ CalledFromWrongThreadException:. Только оригинальный поток, созданный вид иерархии может коснуться его мнения» Это мой код

package com.example.xmlparserdeneme; 

import java.io.IOException; 
import java.util.ArrayList; 

import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 

import org.xml.sax.Attributes; 
import org.xml.sax.SAXException; 
import org.xml.sax.helpers.DefaultHandler; 

import android.app.Activity; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    ArrayList<String> titles = new ArrayList<String>(); 
    Context ctx = this; 
    CustomAdapter adapter = null; 
    ListView lv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     ((Activity) ctx).setContentView(R.layout.activity_main); 

     new parseXML().execute(); 

     Log.i("info2", titles.toString()); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    class parseXML extends AsyncTask<String, Void, String> { 

     MySaxHandler handler; 

     @Override 
     protected String doInBackground(String... params) { 

      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser parser = null; 
      try { 
       parser = spf.newSAXParser(); 
      } catch (ParserConfigurationException e) { 
       e.printStackTrace(); 
      } catch (SAXException e) { 
       e.printStackTrace(); 
      } 

      handler = new MySaxHandler(); 

      try { 
       parser.parse(
         "/xmlParserDeneme/src/Database.xml", 
         handler); 
      } catch (SAXException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      Log.i("info", titles.toString()); 
      return "a"; 

     } 

     @Override 
     protected void onPostExecute(String result) { 

      lv = (ListView) findViewById(R.id.listView); 
      lv.setAdapter(new CustomAdapter(titles, ctx)); 
     } 

     public ArrayList<String> getArray() { 
      return titles; 
     } 

     public class MySaxHandler extends DefaultHandler { 

      StringBuffer chars; 

      public void startElement(String uri, String localName, 
        String qName, Attributes atts) { 
       chars = new StringBuffer(); 

      } 

      public void endElement(String uri, String localName, String qName) 
        throws SAXException { 

       if (localName.equalsIgnoreCase("description")) 
        titles.add(chars.toString()); 

      } 

      public void characters(char ch[], int start, int length) { 
       chars.append(new String(ch, start, length)); 
      } 

     } 

    } 
} 

I Я новичок в android, я не знаю, где меняться. Буду признателен, если кто-нибудь скажет мне, как это исправить?

+0

Это происходит, когда вы обновляете ui из другого потока. Также удалите этот '((Activity) ctx) .setContentView (R.layout.activity_main)'. – Raghunandan

+0

также что это за '' /xmlParserDeneme/src/Database.xml '' где ваш Database.xml? – Raghunandan

+1

@ Raghunandan, моя база данных является файлом plist. – anilbey

ответ

1

Пожалуйста, напишите этот код в методе oncreate.

ctx = this;

И удалите этот код.

((Деятельность) ctx) .setContentView (R.layout.activity_main);

+1

спасибо, он решил мою проблему. Теперь у меня есть еще одна проблема, если бы вы взглянули на нее? [ссылка] http://stackoverflow.com/questions/17471956/my-xml-parsersax-parser-parses-only-uri-source-how-can-i-parse-a-file-which-e [ссылка ] – anilbey

Смежные вопросы

 Смежные вопросы