我需要从mysql数据库中检索信息作为视图列表,这在我的文件中正确完成 应用程序但问题是如果我点击列表项目来显示它的信息 它在我的logcat
中出现了这个问题 09-21 01:39:58.915: E/AndroidRuntime(6968): FATAL EXCEPTION: main
09-21 01:39:58.915: E/AndroidRuntime(6968): java.lang.NullPointerException
09-21 01:39:58.915: E/AndroidRuntime(6968): at com.ksu.sms.ViewCourseStudent$GetCourseDetails.onPostExecute(ViewCourseStudent.java:142)
09-21 01:39:58.915: E/AndroidRuntime(6968): at com.ksu.sms.ViewCourseStudent$GetCourseDetails.onPostExecute(ViewCourseStudent.java:1)
09-21 01:39:58.915: E/AndroidRuntime(6968): at android.os.AsyncTask.finish(AsyncTask.java:602)
09-21 01:39:58.915: E/AndroidRuntime(6968): at android.os.AsyncTask.access$600(AsyncTask.java:156)
09-21 01:39:58.915: E/AndroidRuntime(6968): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
09-21 01:39:58.915: E/AndroidRuntime(6968): at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 01:39:58.915: E/AndroidRuntime(6968): at android.os.Looper.loop(Looper.java:137)
09-21 01:39:58.915: E/AndroidRuntime(6968): at android.app.ActivityThread.main(ActivityThread.java:4340)
09-21 01:39:58.915: E/AndroidRuntime(6968): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 01:39:58.915: E/AndroidRuntime(6968): at java.lang.reflect.Method.invoke(Method.java:511)
09-21 01:39:58.915: E/AndroidRuntime(6968): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-21 01:39:58.915: E/AndroidRuntime(6968): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-21 01:39:58.915: E/AndroidRuntime(6968): at dalvik.system.NativeStart.main(Native Method)
class viewcoursestudent.java
package com.ksu.sms;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class ViewCourseStudent extends Activity {
TextView Name; TextView Description;
TextView OfficeHours;
TextView CreditHours;
TextView MaxAbsenceDays;
TextView ExamsDates ;
String CourseID ;
// Progress Dialog
private ProgressDialog pDialog;
// JSON parser class
JSONParser jsonParser = new JSONParser();
// single course url
private static final String url_course_detials = "http://10.0.2.2/SmsPhp/view_course.php";
//JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_CourseID = "CourseID";
private static final String TAG_course = "course";
private static final String TAG_Name = "Name";
private static final String TAG_OfficeHours = "OfficeHours";
private static final String TAG_CreditHours = "CreditHours";
private static final String TAG_Description = "Description";
private static final String TAG_MaxAbsenceDays = "MaxAbsenceDays";
private static final String TAG_ExamsDates = "ExamsDates";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_course);
Intent i = getIntent();
CourseID = i.getStringExtra(TAG_CourseID);
// Getting complete course details in background thread
new GetCourseDetails().execute();
}
/**
* Background Async Task to Get complete course details
* */
class GetCourseDetails extends AsyncTask<String, String, String> {
private JSONObject course;
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(ViewCourseStudent.this);
pDialog.setMessage("Loading course details. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
// updating UI from Background Thread
// Check for success tag
int success;
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("CourseID", CourseID));
// getting course details by making HTTP request
// Note that product details url will use GET request
JSONObject json = jsonParser.makeHttpRequest(
url_course_detials, "GET", params);
// check your log for json response
Log.d("Single course Details", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully received product details
JSONArray courseObj = json
.getJSONArray(TAG_course); // JSON Array
// get first course object from JSON Array
course = courseObj.getJSONObject(0);
}else{
// course with course id not found
course = null;
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog once got all details
pDialog.dismiss();
if(course != null){
try
{
Name = (TextView) findViewById(R.id.C_Name);
Description = (TextView) findViewById(R.id.C_Des);
CreditHours = (TextView) findViewById(R.id.C_Hours);
OfficeHours=(TextView) findViewById(R.id.C_Ohour);
MaxAbsenceDays=(TextView) findViewById(R.id.C_absence);
ExamsDates=(TextView) findViewById(R.id.Add_C_Exam);
// display product data in EditText
Name.setText( course.getString(TAG_Name));
Description.setText( course.getString(TAG_Description));
OfficeHours.setText( course.getString(TAG_OfficeHours));
MaxAbsenceDays.setText( course.getString(TAG_MaxAbsenceDays));
ExamsDates.setText( course.getString(TAG_ExamsDates));
CreditHours.setText( course.getString(TAG_CreditHours));
}
catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}
如果你需要任何解释我可以做的事情 非常感谢
答案 0 :(得分:1)
CreditHours.setText( course.getString(TAG_CreditHours));
导致NullPointerException。 CreditHours可能为空。检查它是否在您的视图中。
PS:阅读Java代码约定here