这里发生的事情是,当实例化联系对象时,它显示为空对象。此外,我已经检查了JSON数据,它确认了,所以直到文本初始化它似乎工作。 PLS帮助
这是异常日志
Process: com.compscitutorials.basigarcia.navigationdrawervideotutorial, PID: 9369
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.compscitutorials.basigarcia.navigationdrawervideotutorial/mini_project_3.ama.TeacherHome}: java.lang.NullPointerException: Attempt to invoke virtual method 'void
mini_project_3.ama.CustomListAdapter.add(mini_project_3.ama.contacts)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void mini_project_3.ama.CustomListAdapter.add(mini_project_3.ama.contacts)' on a null object reference
at mini_project_3.ama.MarkAttendance.onCreateView(MarkAttendance.java:69)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
at android.app.Activity.performStart(Activity.java:6253)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
MarkAttendance.java
package mini_project_3.ama;
import android.content.Context;
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.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* A simple {@link Fragment} subclass.
*/
public class MarkAttendance extends Fragment {
ListView list;
String data;
CustomListAdapter ca;
JSONArray ja;
JSONObject jo;
contacts c;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.mark_attendance, container, false);
Context context = getContext();
CustomListAdapter adapter = new CustomListAdapter(getActivity(),R.layout.malist);
list = (ListView) v.findViewById(R.id.listview_custom);
list.setAdapter(adapter);
data = getArguments().getString("data");
Calendar cal = Calendar.getInstance();
SimpleDateFormat s = new SimpleDateFormat("dd/MM/yyyy");
String d = s.format(cal.getTime());
//Toast.makeText(getActivity(),""+data,Toast.LENGTH_LONG).show();
try {
jo=new JSONObject(data);
ja=jo.getJSONArray("server_response");
int count=0;
String lecno,lectype,subcode,batchid;
while(count<ja.length())
{
JSONObject jo1=ja.getJSONObject(count);
lecno=jo1.getString("lec_no");
lectype=jo1.getString("lec_type");
subcode=jo1.getString("sub_code");
batchid=jo1.getString("batch_id");
Toast.makeText(getActivity(),""+d+lecno+lectype+subcode+batchid,Toast.LENGTH_LONG).show();
c = new contacts(d,lecno,lectype,subcode,batchid);
ca.add(c);
count++;
}
} catch (JSONException e) {
e.printStackTrace();
}
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String bid= ca.getListBatch(position);
String method="getrno";
Toast.makeText(getActivity(),""+bid,Toast.LENGTH_LONG).show();
}
});
return v;
}
}
答案 0 :(得分:0)
看起来您已声明CustomListAdapter ca;
并且此变量从未实例化,但您尝试将值ca.add(c);
添加到其中。
尝试更改
ca.add(c);
到
adapter.add(c);