2012-09-25 28 views
-1

讀取數據,我需要以檢索從MySQL數據庫Viewlist產品的inforamtion這是在我的 應用程序做得正確,但如果我點擊列表中的項目,以顯示它 的inforamtion它是在出現這個問題的問題我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) 

類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(); 
      } 
     } 
    } 
} 
} 

如果u需要的任何東西explaine我可以做 感謝這麼多

+0

什麼是行渣華:142? – kosa

+0

歡迎來到堆棧溢出。我們歡迎來自新用戶的問題,但這不是一個只需轉儲日誌和代碼並說「當我解決問題時讓我知道」的地方。解釋你正在做什麼,在哪裏發生特定的錯誤,以及你已經做了什麼來解決它。 –

+0

一個名爲GetCourseDetails的類是很不錯的選擇。 – SJuan76

回答

1
CreditHours.setText(course.getString(TAG_CreditHours)); 

會導致NullPointerException。 CreditHours可能爲空。檢查它是否在你的視圖上。

PS:瞭解Java代碼約定here

+0

你的意思是在數據庫中爲空? – user1682578

+0
+0

給你的TextView一個id:。初始化你的TextView:CreditHours =(TextView)findViewById(R.id.awesomeexample);然後調用setText。 –