XMLparser - 不幸的是应用程序停止工作

问题描述:

我有问题,当我运行我的android应用程序(v 4.0.3)我的应用程序停止工作。它基本上是XML解析应用XMLparser - 不幸的是应用程序停止工作

这里mainactivity

package cz.jiri.podlipny.weather_design; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

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

import org.xml.sax.InputSource; 
import org.xml.sax.SAXException; 
import org.xml.sax.XMLReader; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.TextView; 


public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //new Stahni().execute(); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

private class Stahni extends AsyncTask<Void, Void, ParserXMLObject>{ 

     @Override 
     protected ParserXMLObject doInBackground(Void... params){ 
      ParserXMLObject XMLdata = null; 
      try { 
       URL url = new URL("http://www.anddev.org/images/tut/basic/parsingxml/example.xml"); 
       //dostane SAXparser ze SUXFactory 
       SAXParserFactory spf = SAXParserFactory.newInstance(); 
       SAXParser sp = spf.newSAXParser(); 

       //Načte XML ze SAX parseru 
       XMLReader xr = sp.getXMLReader(); 

       //vytvoříme obsluhu handle k XML 
       XMLHandler xmlHandle = new XMLHandler(); 
       xr.setContentHandler(xmlHandle); 

       //postará se o parsování dat z XML 
       xr.parse(new InputSource(url.openStream())); 

       //samotná XMLdata 
       XMLdata = xmlHandle.getParsedData(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (ParserConfigurationException e) { 
       //parser catch 
       e.printStackTrace(); 
      } catch (SAXException e) { 
       // SAX exception 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // IOException z openStreamu 
       e.printStackTrace(); 
      } 
      return XMLdata; 

     } 

     protected void onPostExecute(ParserXMLObject xmldata){ 
      TextView teplota = (TextView) findViewById(R.id.CurTemp); 
      teplota.setText(xmldata.toString()); 
     } 

    } 

public void kliknuto(View v){ 
    new Stahni().execute(); 
} 


} 

这里是parserXML对象

package cz.jiri.podlipny.weather_design; 

public class ParserXMLObject { 
    /* 
    * z XML dat vytváří objekt se kterým se dále pracuje 
    */ 
    private String extractedString = null; 
    private int extractedInt = 0; 

    public String getExtractedString() { 
      return extractedString; 
    } 
    public void setExtractedString(String extractedString) { 
      this.extractedString = extractedString; 
    } 

    public int getExtractedInt() { 
      return extractedInt; 
    } 
    public void setExtractedInt(int extractedInt) { 
      this.extractedInt = extractedInt; 
    } 

    public String toString(){ 
      return "ExtractedString = " + this.extractedString 
          + "nExtractedInt = " + this.extractedInt; 
    } 
} 

,这里是handlerer解析

package cz.jiri.podlipny.weather_design; 

import java.util.jar.Attributes; 

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

public class XMLHandler extends DefaultHandler { 
    // =========================================================== 
    // Fields 
    // =========================================================== 

    private boolean in_outertag = false; 
    private boolean in_innertag = false; 
    private boolean in_mytag = false; 

    private ParserXMLObject myParsedExampleDataSet = new ParserXMLObject(); 

    // =========================================================== 
    // Getter & Setter 
    // =========================================================== 

    public ParserXMLObject getParsedData() { 
      return this.myParsedExampleDataSet; 
    } 

    // =========================================================== 
    // Methods 
    // =========================================================== 
    @Override 
    public void startDocument() throws SAXException { 
      this.myParsedExampleDataSet = new ParserXMLObject(); 
    } 

    @Override 
    public void endDocument() throws SAXException { 
      // Nothing to do 
    } 

    /** Gets be called on opening tags like: 
    * <tag> 
    * Can provide attribute(s), when xml was like: 
    public void startElement(String namespaceURI, String localName, 
        String qName, Attributes atts) throws SAXException { 
      if (localName.equals("outertag")) { 
        this.in_outertag = true; 
      }else if (localName.equals("innertag")) { 
        this.in_innertag = true; 
      }else if (localName.equals("mytag")) { 
        this.in_mytag = true; 
      }else if (localName.equals("tagwithnumber")) { 
        // Extract an Attribute 
        String attrValue = atts.getValue("thenumber"); 
        int i = Integer.parseInt(attrValue); 
        myParsedExampleDataSet.setExtractedInt(i); 
      } 
    } 

    /** Gets be called on closing tags like: 
    * </tag> */ 
    @Override 
    public void endElement(String namespaceURI, String localName, String qName) 
        throws SAXException { 
      if (localName.equals("outertag")) { 
        this.in_outertag = false; 
      }else if (localName.equals("innertag")) { 
        this.in_innertag = false; 
      }else if (localName.equals("mytag")) { 
        this.in_mytag = false; 
      }else if (localName.equals("tagwithnumber")) { 
        // Nothing to do here 
      } 
    } 

    /** Gets be called on the following structure: 
    * <tag>characters</tag> */ 
    @Override 
public void characters(char ch[], int start, int length) { 
      if(this.in_mytag){ 
      myParsedExampleDataSet.setExtractedString(new String(ch, start, length)); 
    } 
} 
} 

这里是logcat的:

04-11 12:40:48.773: I/Adreno200-EGLSUB(25887): <ConfigWindowMatch:2078>: Format RGBA_8888. 
04-11 12:40:48.783: D/memalloc(25887): /dev/pmem: Mapped buffer base:0x4b966000 size:1536000 offset:0 fd:53 
04-11 12:40:48.893: D/memalloc(25887): /dev/pmem: Mapped buffer base:0x4bde7000 size:9154560 offset:7618560 fd:56 
04-11 12:40:51.553: D/memalloc(25887): /dev/pmem: Mapped buffer base:0x4c81c000 size:7557120 offset:6021120 fd:59 
04-11 12:40:51.593: W/dalvikvm(25887): threadid=1: thread exiting with uncaught exception (group=0x40c5d1f8) 
04-11 12:40:51.603: E/AndroidRuntime(25887): FATAL EXCEPTION: main 
04-11 12:40:51.603: E/AndroidRuntime(25887): java.lang.IllegalStateException: Could not find a method Kliknuto(View) in the activity class cz.jiri.podlipny.weather_design.MainActivity for onClick handler on view class android.widget.Button with id 'button1' 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.view.View$1.onClick(View.java:3039) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.view.View.performClick(View.java:3519) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.view.View$PerformClick.run(View.java:14140) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.os.Handler.handleCallback(Handler.java:605) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.os.Looper.loop(Looper.java:137) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at java.lang.reflect.Method.invoke(Method.java:511) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at dalvik.system.NativeStart.main(Native Method) 
04-11 12:40:51.603: E/AndroidRuntime(25887): Caused by: java.lang.NoSuchMethodException: Kliknuto [class android.view.View] 
04-11 12:40:51.603: E/AndroidRuntime(25887): at java.lang.Class.getConstructorOrMethod(Class.java:460) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at java.lang.Class.getMethod(Class.java:915) 
04-11 12:40:51.603: E/AndroidRuntime(25887): at android.view.View$1.onClick(View.java:3032) 
04-11 12:40:51.603: E/AndroidRuntime(25887): ... 11 more 
04-11 12:42:34.123: I/Adreno200-EGLSUB(25988): <ConfigWindowMatch:2078>: Format RGBA_8888. 
04-11 12:42:34.163: D/memalloc(25988): /dev/pmem: Mapped buffer base:0x4bac1000 size:9154560 offset:7618560 fd:53 
04-11 12:42:34.283: D/memalloc(25988): /dev/pmem: Mapped buffer base:0x4c4bc000 size:1536000 offset:0 fd:56 
04-11 12:42:35.333: D/memalloc(25988): /dev/pmem: Mapped buffer base:0x4c79e000 size:7557120 offset:6021120 fd:59 
04-11 12:42:35.353: W/dalvikvm(25988): threadid=1: thread exiting with uncaught exception (group=0x40c5d1f8) 
04-11 12:42:35.363: E/AndroidRuntime(25988): FATAL EXCEPTION: main 
04-11 12:42:35.363: E/AndroidRuntime(25988): java.lang.IllegalStateException: Could not find a method Kliknuto(View) in the activity class cz.jiri.podlipny.weather_design.MainActivity for onClick handler on view class android.widget.Button with id 'button1' 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.view.View$1.onClick(View.java:3039) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.view.View.performClick(View.java:3519) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.view.View$PerformClick.run(View.java:14140) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.os.Handler.handleCallback(Handler.java:605) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.os.Looper.loop(Looper.java:137) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at java.lang.reflect.Method.invoke(Method.java:511) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at dalvik.system.NativeStart.main(Native Method) 
04-11 12:42:35.363: E/AndroidRuntime(25988): Caused by: java.lang.NoSuchMethodException: Kliknuto [class android.view.View] 
04-11 12:42:35.363: E/AndroidRuntime(25988): at java.lang.Class.getConstructorOrMethod(Class.java:460) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at java.lang.Class.getMethod(Class.java:915) 
04-11 12:42:35.363: E/AndroidRuntime(25988): at android.view.View$1.onClick(View.java:3032) 
04-11 12:42:35.363: E/AndroidRuntime(25988): ... 11 more 
04-11 13:14:30.589: I/Adreno200-EGLSUB(26277): <ConfigWindowMatch:2078>: Format RGBA_8888. 
04-11 13:14:30.609: D/memalloc(26277): /dev/pmem: Mapped buffer base:0x4ba23000 size:1536000 offset:0 fd:53 
04-11 13:14:30.719: D/memalloc(26277): /dev/pmem: Mapped buffer base:0x4be17000 size:7557120 offset:6021120 fd:56 
04-11 13:14:32.039: D/memalloc(26277): /dev/pmem: Mapped buffer base:0x4c680000 size:9154560 offset:7618560 fd:59 
04-11 13:14:32.069: W/dalvikvm(26277): threadid=1: thread exiting with uncaught exception (group=0x40c5d1f8) 
04-11 13:14:32.079: E/AndroidRuntime(26277): FATAL EXCEPTION: main 
04-11 13:14:32.079: E/AndroidRuntime(26277): java.lang.IllegalStateException: Could not find a method Kliknuto(View) in the activity class cz.jiri.podlipny.weather_design.MainActivity for onClick handler on view class android.widget.Button with id 'button1' 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.view.View$1.onClick(View.java:3039) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.view.View.performClick(View.java:3519) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.view.View$PerformClick.run(View.java:14140) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.os.Handler.handleCallback(Handler.java:605) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.os.Looper.loop(Looper.java:137) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.app.ActivityThread.main(ActivityThread.java:4424) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at java.lang.reflect.Method.invokeNative(Native Method) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at java.lang.reflect.Method.invoke(Method.java:511) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at dalvik.system.NativeStart.main(Native Method) 
04-11 13:14:32.079: E/AndroidRuntime(26277): Caused by: java.lang.NoSuchMethodException: Kliknuto [class android.view.View] 
04-11 13:14:32.079: E/AndroidRuntime(26277): at java.lang.Class.getConstructorOrMethod(Class.java:460) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at java.lang.Class.getMethod(Class.java:915) 
04-11 13:14:32.079: E/AndroidRuntime(26277): at android.view.View$1.onClick(View.java:3032) 
04-11 13:14:32.079: E/AndroidRuntime(26277): ... 11 more 
+1

发布logcat。 – eightx2 2013-04-11 11:03:47

在您的布局xml文件中,您有一个编号为button1的按钮。 onClick属性引用了一个名为Kliknuto()的方法,但是您已经实施了一种称为kliknuto()的方法(请注意区别)。

尝试使用onClick属性中的kliknuto代替Kliknuto

+0

谢谢,这是问题,但我有另一个:D当我加载XML文件在我的textview中为null – CJHornster 2013-04-11 11:46:06

+0

@CJHornster什么是null? TextView或'onPostExecute(ParserXMLObject xmldata)'方法中的'xmldata.toString()'? – 2013-04-11 13:14:35

+0

xmldata.toString()因此ParserXMLObject中的所有数据 – CJHornster 2013-04-11 14:40:53