2013-12-17 39 views
0

我的應用程序在模擬器中正確運行,但不是在我的手機(LG NEXUS 4) - 「我的應用程序停止工作」。 我總的目的是爲了顯示網址XML 的問答(數據)在logcat中顯示以下內容:解析XML錯誤導致:java.lang.NullPointerException

12-17 12:30:13.401: E/AndroidRuntime(10251): FATAL EXCEPTION: main 
12-17 12:30:13.401: E/AndroidRuntime(10251): Process: com.michalakis.schoolgame, PID: 10251 
12-17 12:30:13.401: E/AndroidRuntime(10251): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.michalakis.schoolgame/com.michalakis.schoolgame.StartGame}: java.lang.NullPointerException 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.ActivityThread.access$800(ActivityThread.java:135) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.os.Handler.dispatchMessage(Handler.java:102) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.os.Looper.loop(Looper.java:136) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.ActivityThread.main(ActivityThread.java:5017) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at java.lang.reflect.Method.invokeNative(Native Method) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at java.lang.reflect.Method.invoke(Method.java:515) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at dalvik.system.NativeStart.main(Native Method) 
12-17 12:30:13.401: E/AndroidRuntime(10251): Caused by: java.lang.NullPointerException 
12-17 12:30:13.401: E/AndroidRuntime(10251): at com.michalakis.schoolgame.StartGame.init(StartGame.java:75) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at com.michalakis.schoolgame.StartGame.onCreate(StartGame.java:39) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.Activity.performCreate(Activity.java:5231) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
12-17 12:30:13.401: E/AndroidRuntime(10251): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 

我的Java活性起着如下:

import java.net.URL; 

    import javax.xml.parsers.SAXParser; 

import javax.xml.parsers.SAXParserFactory; 

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

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class StartGame extends Activity { 

    private int CurrentQuestion; 
    private Button answerButton; 
    private Button questionButton; 
    private TextView questionView; 
    private TextView answerView; 
    private EditText answerText; 
    TextView[] Question; 
    TextView[] id; 
    TextView[] Answer; 

    /** Create Object For SiteList Class */ 
    SitesList sitesList = null; 

    /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     init(); 
    } 

    public void init(){ 

     CurrentQuestion = -1; 
     answerButton = (Button)findViewById(R.id.AnswerButton); 
     questionButton = (Button)findViewById(R.id.QuestionButton); 
     questionView = (TextView)findViewById(R.id.QuestionTextView); 
     answerView = (TextView)findViewById(R.id.AnswerTextView); 
     answerText = (EditText)findViewById(R.id.AnswerText); 

     try { 

      /** Handling XML */ 
      SAXParserFactory spf = SAXParserFactory.newInstance(); 
      SAXParser sp = spf.newSAXParser(); 
      XMLReader xr = sp.getXMLReader(); 

      /** Send URL to parse XML Tags */ 
      URL sourceUrl = new URL(
        "http://eclass.sch.gr/modules/document/file.php/T489110/quiz.xml"); 

      /** Create handler to handle XML Tags (extends DefaultHandler) */ 
      MyXMLHandler myXMLHandler = new MyXMLHandler(); 
      xr.setContentHandler(myXMLHandler); 
      xr.parse(new InputSource(sourceUrl.openStream())); 

     } catch (Exception e) { 
      System.out.println("XML Pasing Excpetion = " + e); 
     } 

     /** Get result from MyXMLHandler SitlesList Object */ 
     sitesList = MyXMLHandler.sitesList; 

     /** Assign textview array lenght by arraylist size */ 
     Question = new TextView[sitesList.getQuestion().size()]; 
     id = new TextView[sitesList.getQuestion().size()]; 
     Answer = new TextView[sitesList.getQuestion().size()]; 

     answerButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       checkAnswer(); 
      }}); 
     questionButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       showQuestion(); 
      }});  
    } 
      public void showQuestion(){ 
       CurrentQuestion++; 
       if (CurrentQuestion == sitesList.getQuestion().size()) 
        CurrentQuestion = 0; 
       questionView.setText(sitesList.getQuestion().get(CurrentQuestion)); 
       answerView.setText(""); 
       answerText.setText(""); 
      } 
      public boolean isCorrect(String answer){ 
       return (answer.equalsIgnoreCase(sitesList.getAnswer().get(CurrentQuestion))); 
      } 
      public void checkAnswer(){ 
       String answer = answerText.getText().toString(); 
       if (isCorrect(answer)) 
        answerView.setText("Σωστή Απάντηση"); 
       else 
        answerView.setText("Λανθασμένη Απάντηση. Προσπαθείστε πάλι!!!"); 
      } 
} 

main.xml中如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#000000" 
    android:orientation="vertical" 
    android:padding="20dp" > 

    <TextView 
     android:id="@+id/QuestionTextView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="" 
     android:textColor="#FFFFFF" 
     android:textSize="15dp" 
     android:textStyle="bold" > 
    </TextView> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="100" 
    android:padding="10dp" > 
    <EditText 
     android:id="@+id/AnswerText" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:textSize="15dp" 
     android:textStyle="bold" 
     android:layout_weight="70" 
     android:hint="Γράψτε εδώ την απάντηση σας..." > 
    </EditText> 

    <Button 
     android:id="@+id/AnswerButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:layout_weight="30" 
     android:textColor="#800000" 
     android:textStyle="bold" 
     android:text="Έλεγχος Απάντησης" /> 
    </LinearLayout> 

<TextView 
    android:id="@+id/AnswerTextView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:textSize="20dp" 
    android:textColor="#00FF00" 
    android:textStyle="bold" 
    android:text="" /> 

<Button 
    android:id="@+id/QuestionButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textStyle="bold" 
    android:textSize="18dp" 
    android:text="Δείξτε μου την ερώτηση" /> 

</LinearLayout> 

我期待着回答 謝謝

+1

你可以給StartGame第75行拋出異常嗎? –

+0

/**以數組列表大小指定textview數組長度*/ Line75 \t Question = new TextView [sitesList.getQuestion()。size()]; Line76 \t id = new TextView [sitesList.getQuestion()。size()]; Line77 \t Answer = new TextView [sitesList.getQuestion()。size()]; – user3110726

回答

0

線:

Question = new TextView[sitesList.getQuestion().size()]; 

因此,無論sitesList爲空,或者更可能的getQuestion()返回null。

+0

in LINE 32我在我的代碼SitesList sitesList = null;但儘管我刪除null(SitesList sitesList;)在手機中的結果是負的 – user3110726

+0

我會嘗試看到getQuestio() – user3110726

+0

任何幫助請!!! – user3110726