2014-09-30 2 views
-1

Я хочу, чтобы получить JSONArray к String [].
В моем коде нет ошибок, но когда я компилирую в LogCat ошибка относится к строке:разбор JSONArray к JSONObject и получить строку в строку []

detail[i] = 
      "NAMA SIM  : "+jsonMain.optString("nama_pengendara").toString()+"\n"+ 
      "IDENTITAS  : "+jsonMain.optString("jenis_identitas").toString()+"\n"+ 
      "NO.IDENTITAS : "+jsonMain.optString("no_identitas").toString()+"\n"+ 
      "PELANGGARAN : "+jsonMain.optString("jenis_pelanggaran").toString()+"\n"+ 
      "--------------------------------";     

detail[] является String[] и info_p является JSONArray
Это мой полный код содержит ошибки Wile компиляции:

public class InfoPelanggaranActivity extends Activity{ 
private static final String TAG = InfoPelanggaranActivity.class.getCanonicalName(); 
public static JSONArray info_p;//delegated isi response 
ListView _lv_detail; 
Button _btn_gotoAdd; 
String[] detail; 
int arrayLength; 
ArrayList<String> detailList; 
ArrayAdapter<String> listAdapter; 

public void onCreate(Bundle savedIntanceState){ 
    super.onCreate(savedIntanceState); 
    Log.v(TAG, "Start onCreate InfoPelanggaranActivity"); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_infopelanggaran); 

    _lv_detail = (ListView) findViewById(R.id.lv_detail); 
    _btn_gotoAdd = (Button) findViewById(R.id.btn_gotoAdd); 
    _btn_gotoAdd.setOnClickListener(new ClickKeAdd()); 
    setDetails(); 
} 

private String[] setDetails() { 
    // TODO Auto-generated method stub 
    arrayLength = info_p.length(); 
    for(int i = 0; i<arrayLength; i++){ 
     Log.v(TAG, "Start setDetails(), for Index: "+i); 
     JSONObject jsonMain = info_p.optJSONObject(i); 
     detail[i] = new String[]{ 
       "NAMA SIM  : "+jsonMain.optString("nama_pengendara").toString()+"\n"+ 
       "IDENTITAS  : "+jsonMain.optString("jenis_identitas").toString()+"\n"+ 
       "NO.IDENTITAS : "+jsonMain.optString("no_identitas").toString()+"\n"+ 
       "PELANGGARAN : "+jsonMain.optString("jenis_pelanggaran").toString()+"\n"+ 
       "--------------------------------"};      
    } 
    Log.w(TAG, "detail[i]: "+detail.length); 
    detailList = new ArrayList<String>(); 
    detailList.addAll(Arrays.asList(detail)); 
    // 
    listAdapter = new ArrayAdapter<String>(this,R.layout.row_infopelanggaran,detailList); 
    _lv_detail.setAdapter(listAdapter);  
    return detail; 
} 
public class ClickKeAdd implements View.OnClickListener{ 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent i = new Intent(InfoPelanggaranActivity.this,AddPelanggaranActivity.class); 
     startActivity(i);   
    } 

} 

}

И это ИСКЛЮЧЕНИЕ:

09-30 18:41:58.226: E/AndroidRuntime(3711): FATAL EXCEPTION: main 
09-30 18:41:58.226: E/AndroidRuntime(3711): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.peti/com.peti.InfoPelanggaranActivity}: java.lang.NullPointerException 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.os.Looper.loop(Looper.java:137) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at java.lang.reflect.Method.invoke(Method.java:511) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at dalvik.system.NativeStart.main(Native Method) 
09-30 18:41:58.226: E/AndroidRuntime(3711): Caused by: java.lang.NullPointerException 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at com.peti.InfoPelanggaranActivity.setDetails(InfoPelanggaranActivity.java:54) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at com.peti.InfoPelanggaranActivity.onCreate(InfoPelanggaranActivity.java:40) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.Activity.performCreate(Activity.java:5104) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
09-30 18:41:58.226: E/AndroidRuntime(3711):  ... 11 more 

Почему это произошло?
Почему я не могу заполнить детали []?
Кто-нибудь помогите мне, пожалуйста ..

+0

Что такое arrayLength? Это длина детали? –

+0

arrayLength - длина info_p, info_p - JSONArray. – Ariasa

+1

Что такое ошибка компиляции? –

ответ

0

хорошо получил его ...

detail[i] = new String[]{ 
       "NAMA SIM  : "+jsonMain.optString("nama_pengendara").toString()+"\n"+ 
       "IDENTITAS  : "+jsonMain.optString("jenis_identitas").toString()+"\n"+ 
       "NO.IDENTITAS : "+jsonMain.optString("no_identitas").toString()+"\n"+ 
       "PELANGGARAN : "+jsonMain.optString("jenis_pelanggaran").toString()+"\n"+ 
       "--------------------------------"}; 

это ваша линия 54

здесь вы создаете массив строк с помощью нового оператора размера 1, так как не запятая Seperator т.е.

new String[]{ 
      "NAMA SIM  : "+jsonMain.optString("nama_pengendara").toString()+"\n"+ 
      "IDENTITAS  : "+jsonMain.optString("jenis_identitas").toString()+"\n"+ 
      "NO.IDENTITAS : "+jsonMain.optString("no_identitas").toString()+"\n"+ 
      "PELANGGARAN : "+jsonMain.optString("jenis_pelanggaran").toString()+"\n"+ 
      "--------------------------------"}; 

и попытаться назначить его в строку под названием detail [i] Этот тип преобразования типов не может быть выполнен автоматически.

теперь решение ..after arrayLength = info_p.length(); добавить detail=new String[arrayLength]

и внутри для изменения контура

detail[i] = new String[]{ 
      "NAMA SIM  : "+jsonMain.optString("nama_pengendara").toString()+"\n"+ 
      "IDENTITAS  : "+jsonMain.optString("jenis_identitas").toString()+"\n"+ 
      "NO.IDENTITAS : "+jsonMain.optString("no_identitas").toString()+"\n"+ 
      "PELANGGARAN : "+jsonMain.optString("jenis_pelanggaran").toString()+"\n"+ 
      "--------------------------------"};  

к

detail[i] = "NAMA SIM  : "+jsonMain.optString("nama_pengendara").toString()+"\n"+ 
      "IDENTITAS  : "+jsonMain.optString("jenis_identitas").toString()+"\n"+ 
      "NO.IDENTITAS : "+jsonMain.optString("no_identitas").toString()+"\n"+ 
      "PELANGGARAN : "+jsonMain.optString("jenis_pelanggaran").toString()+"\n"+ 
      "--------------------------------"; 
Смежные вопросы