2015-10-11 13 views
1

我为Android设备中的AlertDialog动态构建字符串数组。 创建字符串数组1所示:AlertDialog在一个字符串数组上崩溃而不在另一个上 - 它们看起来是相同的?

final int  SAMPLERATES_NUM = 9; 
String[]  SampleRates_Str = new String[SAMPLERATES_NUM]; 

SampleRates_Str[ValidSampleRate_Index] = Integer.toString(SampRate); 

现在我创建数组2字符串简单地通过:

String[] SampleRates_Str1 = {"48000", "44100", "32000", "22050", "16000", "11025", "8000", "4000"}; 

现在我打电话AlertDialog并呈现这两个阵列(一个在时间)。系统崩溃的SampleRates_Str但它只是对SampleRates_Str1 - 但是当我在ADK检查它们,它们出现完全相同的内容(至少对我来说)...

public void createListAlertDialog() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Pick a Sampling Rate"); 
    String[] SampleRates_Str1 = {"48000", "44100", "32000", "22050", "16000", "11025", "8000", "4000"}; 
    builder.setSingleChoiceItems(SampleRates_Str1, SampleRates_Index, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int item) { 
        SampleRates_Index = item; 
       } 
      }); 

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { // Add the OK button 
       public void onClick(DialogInterface dialog, int which) { 
        PickFsDone = true; 
       } 
      } 
    ); 

    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

为什么不同?

前几行的崩溃日志:

10-11 04:56:36.746: E/AndroidRuntime(3144): FATAL EXCEPTION: main 
10-11 04:56:36.746: E/AndroidRuntime(3144): Process: processing.test.soundanalyzer, PID: 3144 
10-11 04:56:36.746: E/AndroidRuntime(3144): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference 
10-11 04:56:36.746: E/AndroidRuntime(3144): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394) 

由于提前, 问候罗布。

回答

0

array1只有8个变量。所以

final int  SAMPLERATES_NUM = 9; 

应该

final int  SAMPLERATES_NUM = 8; 

或变量至少一个未初始化要保持空。

+0

即使我将SampleRates_Str1设置为9个字符串,也是一样的情况....我真的很想知道会有什么不同。在Watch窗口中,它们看起来是一样的... – user2064070

+0

崩溃日志中的前几行:
10-11 04:56:36.746:E/AndroidRuntime(3144):致命例外:main 10-11 04:56:36.746: E/AndroidRuntime(3144):进程:processing.test.soundanalyzer,PID:3144 10-11 04:56:36.746:E/AndroidRuntime(3144):java.lang.NullPointerException:试图调用虚拟方法'java.lang .String java.lang.Object.toString()'null对象引用 10-11 04:56:36.746:E/AndroidRuntime(3144):\t at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394) – user2064070

+1

显然你初始化array1失败。 array1的至少一个变量可以为null。 – hata

相关问题