2014-05-08 269 views
-1

我提示以下錯誤:不幸的是應用程序停止

05-08 01:03:16.003: D/dalvikvm(1147): GC_FOR_ALLOC freed 46K, 4% free 3036K/3156K, paused 98ms, total 102ms 
    05-08 01:03:16.313: D/dalvikvm(1147): GC_FOR_ALLOC freed 3K, 4% free 3386K/3508K, paused 42ms, total 43ms 
    05-08 01:03:17.263: D/gralloc_goldfish(1147): Emulator without GPU emulation detected. 
    05-08 01:03:21.563: D/dalvikvm(1147): GC_FOR_ALLOC freed 11K, 2% free 3850K/3928K, paused 139ms, total 146ms 
    05-08 01:03:21.733: D/dalvikvm(1147): GC_FOR_ALLOC freed 4K, 3% free 3944K/4028K, paused 139ms, total 140ms 
    05-08 01:03:21.813: I/dalvikvm-heap(1147): Grow heap (frag case) to 4.990MB for 1127536-byte allocation 
    05-08 01:03:22.043: D/dalvikvm(1147): GC_FOR_ALLOC freed <1K, 2% free 5045K/5132K, paused 224ms, total 224ms 
    05-08 01:03:23.943: D/AndroidRuntime(1147): Shutting down VM 
    05-08 01:03:23.943: W/dalvikvm(1147): threadid=1: thread exiting with uncaught exception (group=0xb1ad3ba8) 
    05-08 01:03:24.003: E/AndroidRuntime(1147): FATAL EXCEPTION: main 
    05-08 01:03:24.003: E/AndroidRuntime(1147): Process: com.example.crosswordapp, PID: 1147 
    05-08 01:03:24.003: E/AndroidRuntime(1147): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.crosswordapp/com.example.crosswordapp.MainActivity}: java.lang.NullPointerException 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.os.Handler.dispatchMessage(Handler.java:102) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.os.Looper.loop(Looper.java:136) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at java.lang.reflect.Method.invokeNative(Native Method) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at java.lang.reflect.Method.invoke(Method.java:515) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at dalvik.system.NativeStart.main(Native Method) 
    05-08 01:03:24.003: E/AndroidRuntime(1147): Caused by: java.lang.NullPointerException 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at com.example.crosswordapp.MainActivity.onCreate(MainActivity.java:139) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.Activity.performCreate(Activity.java:5231) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
    05-08 01:03:24.003: E/AndroidRuntime(1147):  ... 11 more 
    05-08 01:08:24.593: I/Process(1147): Sending signal. PID: 1147 SIG: 9 

這是我的日誌貓

我MainActivity.java是這個

String output = "-,-,-,-,-,-,-,-,-,-,-,-,-,;-,a,-,c,g,-,-,-,g,-,-,-,-,;c,s,-,o,a,-,-,-,r,-,-,-,-,;o,s,-,h,t,-,-,-,o,-,-,-,-,;m,e,-,o,h,-,-,-,u,p,-,-,-,;p,m,-,r,e,-,-,-,p,e,-,-,-,;a,b,s,t,r,a,c,t,i,o,n,-,-,;n,l,-,-,i,-,-,-,n,p,-,-,-,;y,a,-,-,n,-,-,-,g,l,-,-,-,;-,g,-,-,g,-,-,-,-,e,-,-,-,;-,e,-,-,-,-,-,-,-,-,-,-,-,;-,-,-,-,-,-,-,-,-,-,-,-,-,;-,-,-,-,-,-,-,-,-,-,-,-,-,;"; 
     String[][] populate = new String[13][13]; 

     String[] outputRow = output.split(";"); 
     // Log.i(outputRow+"output"); 
     for (int i = 0; i < outputRow.length; i++) { 
      String[] outputCol = outputRow[i].split(","); 
      for (int j = 0; j < outputCol.length; j++) { 

       buttons[i][j] = new TextView(MainActivity.this); 

       buttons[i][j].setBackgroundResource(R.drawable.white); 
       if (populate[i][j].equalsIgnoreCase("-")) { 
        buttons[i][j].setText(populate[i][j]); 
        buttons[i][j].setBackgroundResource(R.drawable.black); 
        buttons[i][j].setEnabled(false); 
       } else { 
        buttons[i][j].setText(populate[i][j]); 
        buttons[i][j].setBackgroundResource(R.drawable.white); 
        buttons[i][j].setEnabled(true); 
       } 

這裏我需要顯示與電網我在程序中返回的字符串輸出。在這我沒有得到任何錯誤,但運行應用程序它顯示:

不幸的是應用程序停止。

這裏139行是

如果(填充[i] [j] .equalsIgnoreCase( 「 - 」))

這是示出了空指針異常。我不知道它爲什麼會來。

+0

下面的答案是正確的。一般來說,當你做這樣的事情時,以NPE證明的方式編寫它,比如'' - 「。equalsIgnoreCase(populate [i] [j])' - 這樣,即使數組單元格爲空,您仍然可以將其與字符串文字進行比較而不必執行空檢查。 – 323go

+0

我這樣做,但輸出顯示所有的白色按鈕。輸出不正確 – user3035215

+0

當然,它不起作用 - 你仍然沒有解決問題,但你避免了崩潰。看到下面的答案 - 你從來沒有填充過「填充」,所以這就是你的問題所在。 – 323go

回答

0

你的錯誤說你有一個NULL POINTER EXCEPTION,這意味着其中一個字符串沒有取任何值並保持爲空。所以當您嘗試訪問該字符串時,會發生錯誤。 嘗試首先打印所有字符串並查看哪個字符串正在存儲哪些數據,也許這樣可以解決您的錯誤。

+0

要打印我使用的值,如Log.i(「按鈕」+ i + j),但它顯示i(Log.i)位置的錯誤。如何糾正這個問題.. – user3035215

+0

在循環開始之前,打印FOR LOOP內部的填充值。同樣在你正在使用的其他for循環中,使用i和j值打印字符串,以便知道每列包含的內容。使用一個簡單的system.out.println()語句來打印並檢查日誌,你將得到輸出。 – Aradhna

+0

沒關係,按鈕內部的文本不是在中間打印,而只是在左邊打印(它看起來像隱藏文本)。如果您不介意,請告訴我如何在中間打印文本。 – user3035215

2

雖然你已經定義了String[][] populate = new String[13][13];
我沒有看到你的代碼在哪裏填充它。
這會導致populate[i][j]爲空,並且會拋出異常。
嘗試在使用它之前將值填充到[] []中。

相關問題