2013-09-29 44 views
1

運行下面的代碼時我得到錯誤,指出應用程序意外停止...在我的logcat..it顯示如此之多的錯誤..我也附加了logcat錯誤,我有致命異常太.... 請幫助....在android中的xml解析錯誤,在運行時顯示致命異常

XMLdemo.java 

package com.example.myfirstapplication; 

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

import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserException; 
import org.xmlpull.v1.XmlPullParserFactory; 

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

class Product 
{ 

public String name; 
public String quantity; 
public String color; 

    } 
    public class XMLDemo extends Activity { 

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

    XmlPullParserFactory pullParserFactory; 
    try { 
     pullParserFactory = XmlPullParserFactory.newInstance(); 
     XmlPullParser parser = pullParserFactory.newPullParser(); 

      InputStream in_s = getApplicationContext().getAssets().open("temp.xml"); 
      parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); 
      parser.setInput(in_s, null); 

      parseXML(parser); 

    } catch (XmlPullParserException e) { 

     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

private void parseXML(XmlPullParser parser) throws XmlPullParserException,IOException 
{ 
    ArrayList<Product> products = null; 
    int eventType = parser.getEventType(); 
    Product currentProduct = null; 

    while (eventType != XmlPullParser.END_DOCUMENT){ 
     String name = null; 
     switch (eventType){ 
      case XmlPullParser.START_DOCUMENT: 
       products = new ArrayList(); 
       break; 
      case XmlPullParser.START_TAG: 
       name = parser.getName(); 
       if (name == "product"){ 
        currentProduct = new Product(); 
       } else if (currentProduct != null){ 
        if (name == "productname"){ 
         currentProduct.name = parser.nextText(); 
        } else if (name == "productcolor"){ 
         currentProduct.color = parser.nextText(); 
        } else if (name == "productquantity"){ 
         currentProduct.quantity= parser.nextText(); 
        } 
       } 
       break; 
      case XmlPullParser.END_TAG: 
       name = parser.getName(); 
       if (name.equalsIgnoreCase("product") && currentProduct != null){ 
        products.add(currentProduct); 
       } 
     } 
     eventType = parser.next(); 
    } 

    printProducts(products); 
} 



private void printProducts(ArrayList<Product> products) 
{ 
    String content = ""; 
    Iterator<Product> it = products.iterator(); 
    while(it.hasNext()) 
    { 
     Product currProduct = it.next(); 
     content = content + "nnnProduct :" + currProduct.name + "n"; 
     content = content + "Quantity :" + currProduct.quantity + "n"; 
     content = content + "Color :" + currProduct.color + "n"; 

    } 

    TextView display = (TextView)findViewById(R.id.info); 
    display.setText(content); 
} 

@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; 
} 
    } 

我的佈局 main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/info" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="20dp" 
    android:text="TextView" /> 

    </LinearLayout> 

機器人的manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.myfirstapplication" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="17" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.myfirstapplication.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.example.myfirstapplication.Main2Activity" 
     android:label="@string/title_activity_main2" > 
    </activity> 
</application> 

</manifest> 

logcat的錯誤,而RUNNING

09-29 19:55:21.378: D/AndroidRuntime(275): Shutting down VM 
09-29 19:55:21.378: W/dalvikvm(275): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
09-29 19:55:21.398: E/AndroidRuntime(275): FATAL EXCEPTION: main 
09-29 19:55:21.398: E/AndroidRuntime(275): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myfirstapplication/com.example.myfirstapplication.MainActivity}: java.lang.ClassNotFoundException: com.example.myfirstapplication.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.myfirstapplication-1.apk] 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.os.Looper.loop(Looper.java:123) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-29 19:55:21.398: E/AndroidRuntime(275): at java.lang.reflect.Method.invokeNative(Native Method) 
09-29 19:55:21.398: E/AndroidRuntime(275): at java.lang.reflect.Method.invoke(Method.java:521) 
09-29 19:55:21.398: E/AndroidRuntime(275): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-29 19:55:21.398: E/AndroidRuntime(275): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-29 19:55:21.398: E/AndroidRuntime(275): at dalvik.system.NativeStart.main(Native Method) 
09-29 19:55:21.398: E/AndroidRuntime(275): Caused by: java.lang.ClassNotFoundException: com.example.myfirstapplication.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.myfirstapplication-1.apk] 
09-29 19:55:21.398: E/AndroidRuntime(275): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
09-29 19:55:21.398: E/AndroidRuntime(275): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
09-29 19:55:21.398: E/AndroidRuntime(275): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
09-29 19:55:21.398: E/AndroidRuntime(275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
09-29 19:55:21.398: E/AndroidRuntime(275): ... 11 more 
09-29 20:12:36.938: D/AndroidRuntime(298): Shutting down VM 
09-29 20:12:36.998: W/dalvikvm(298): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
09-29 20:12:37.058: E/AndroidRuntime(298): FATAL EXCEPTION: main 
09-29 20:12:37.058: E/AndroidRuntime(298): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myfirstapplication/com.example.myfirstapplication.MainActivity}: java.lang.ClassNotFoundException: com.example.myfirstapplication.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.myfirstapplication-1.apk] 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.os.Looper.loop(Looper.java:123) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-29 20:12:37.058: E/AndroidRuntime(298): at java.lang.reflect.Method.invokeNative(Native Method) 
09-29 20:12:37.058: E/AndroidRuntime(298): at java.lang.reflect.Method.invoke(Method.java:521) 
09-29 20:12:37.058: E/AndroidRuntime(298): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-29 20:12:37.058: E/AndroidRuntime(298): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-29 20:12:37.058: E/AndroidRuntime(298): at dalvik.system.NativeStart.main(Native Method) 
09-29 20:12:37.058: E/AndroidRuntime(298): Caused by: java.lang.ClassNotFoundException: com.example.myfirstapplication.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.myfirstapplication-1.apk] 
09-29 20:12:37.058: E/AndroidRuntime(298): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
09-29 20:12:37.058: E/AndroidRuntime(298): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
09-29 20:12:37.058: E/AndroidRuntime(298): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
09-29 20:12:37.058: E/AndroidRuntime(298): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
09-29 20:12:37.058: E/AndroidRuntime(298): ... 11 more 
+1

不要使用==比較字符串。不確定這是全部問題,但是您的START_TAG案例會這樣做,這當然是錯誤的。 –

+0

嘗試刷新項目的構建!它也給你ClassNotFoundException。 – ashu

回答

1

您沒有提到您的清單正確的活動名稱。你已經提到了MainActivity。它應該是XMLDemo。

用com.example.myfirstapplication.XMLDemo代替com.example.myfirstapplication.MainActivity,你會沒事的。由於您的清單中沒有適當的活動名稱,所以這就是拋出ClassNotFoundException的原因。

相關問題