Android Studioを使用してxmlファイルからデータを取得し、
取得した値をグローバル変数に格納したいのですが、
xmlファイル取得をthreadで実行しているため、globalsがnullとなってしまい
charactersメソッドで取得しているデータがグローバルに格納できません。
characters内でglobalsを定義したりしましたがうまくできませんでした。
どうしたらよいでしょうか?
java
1public class XmlSaxReader extends DefaultHandler { 2 int startItem = 0; 3 Globals globals; 4 String XmlComDataAbcName = ""; 5 AbcActivity XmlComDataActivity; 6 7 public void XmlSaxDbDataReader(AbcActivity abcActivity , int end_flg) throws IOException, ParserConfigurationException, SAXException { 8 if(end_flg == 0) { 9 globals = (Globals)abcActivity.getApplication(); 10 XmlComDataActivity = abcActivity; 11 new Thread(new Runnable() { 12 @Override 13 public void run() { 14 try { 15 SAXParserFactory fac = SAXParserFactory.newInstance(); 16 SAXParser parser = fac.newSAXParser(); 17 XmlSaxReader reader = new XmlSaxReader(); 18 URL url = new URL(globals.httpname + "/ABCsystemData.xml"); 19 HttpURLConnection con = (HttpURLConnection) url.openConnection(); 20 parser.parse(con.getInputStream(), reader); 21 } catch (Exception ex) { 22 System.out.println(ex); 23 } 24 } 25 }).start(); 26 } 27 else{ 28 29 } 30 } 31 public void startDocument() { 32 33 } 34 public void startElement(String uri, String localName, String qName, Attributes attributes) { 35 36 if (qName.equals("DbSver")) { 37 startItem = 1; 38 } 39 } 40 public void characters(char[] ch, int offset, int length) { 41 if (startItem == 1) { 42 XmlComDataAbcName = new String(ch, offset, length);//ここでXmlのデータを取得できている 43 //globals.AbcName = XmlComDataAbcName;//★本当はここでグローバルに入れたい 44 } 45 } 46 public void endElement(String uri, String localName, String qName) { 47 48 startItem = 0; 49 50 } 51 public void endDocument(){ 52 53 } 54} 55
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。