-1
我有一個名爲Tab1
的片段,我從中調用名爲sendStatusTab1
的方法並將結果存儲在String數組中。 sendStatusTab1
進一步調用MyDBHandler
中的retrieveStatus方法,該方法也返回一個數組。Android中使用字符串數組的空指針異常
我收到了NullPointerException
,正如您在代碼中看到的,並提供了進一步的錯誤。
我該如何糾正它?
代碼爲Tab1
片段:在MyDBHandler
public String[] sendStatusTab1(int table) {
arraystatus = dbHandler.retrieveStatus(arraystatus, table);
return arraystatus;
}
代碼的方法:在MainActivity2
package com.example.mrbrminocha.login;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import java.util.zip.Inflater;
public class Tab1 extends Fragment {
ImageButton IB;
TextView parking_left;
String buttonID;
String arrayStatus[] = new String[86];
int booked_counter=0;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.tab_1,container,false);
arrayStatus = ((MainActivity2)this.getActivity()).sendStatusTab1(1);
for (int i = 0; i < 86; i++) {
buttonID = "button" + (i + 1);
int resID = getResources().getIdentifier(buttonID, "id", ((MainActivity2) this.getActivity()).getPackageName());
IB = (ImageButton) v.findViewById(resID);
if (arrayStatus[i].equals("Booked")) {
booked_counter++;
IB.setImageResource(R.drawable.grey1);
IB.setClickable(false);
}
}
parking_left = (TextView) v.findViewById(R.id.counter);
parking_left.setText("Parking Left" + (86-booked_counter) + "/86");
booked_counter = 0;
return v;
}
}
代碼方法示值誤差
public String[] retrieveStatus(String array[],int table) {
String table_name = "";
switch (table) {
case 1: table_name = TABLE1;
break;
}
int index = 0;
String dbString = "";
SQLiteDatabase db = getWritableDatabase();
String query = "SELECT * FROM" + TABLE1 + "WHERE 1";
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
while (!c.isAfterLast()) {
if (c.getString(c.getColumnIndex("buttonstatus")) != null) {
array[index++] = c.getString(c.getColumnIndex("buttonstatus"));
}
c.moveToNext();
}
db.close();
return array;
}
爲什麼我收到NullPointerException
,我該如何解決這個問題?
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] com.example.mrbrminocha.login.MyDBHandler.retrieveStatus(java.lang.String[], int)' on a null object reference
at com.example.mrbrminocha.login.MainActivity2.sendStatusTab1(MainActivity2.java:16 1)
at com.example.mrbrminocha.login.Tab1.onCreateView(Tab1.java:33)
感謝烏拉圭回合的答覆,但沒有例外,我的應用程序正在運行之前,我增加了一些新功能,其中包括我上面指定的代碼。這個查詢沒有問題。如果你有其他建議,回覆? –