2013-10-30 50 views
0

我想在電話屏幕上烤麪包。這是我的phonestate班,它延伸phonestatelistener。這裏面我已經創建了一個線程類是這樣的:致命例外:線程166

class Test extends Thread implements Runnable { 
private CustomPhoneStateListener parent; 

ThreadProg() { 
} 

@Override 
public void run() { 
    System.out.println("come to run"); 
    con = db.getHmsConnection(); 
    String query = "select name,Phone,message from contactdetails where Phone='" 
      + incomingNumber1 + "'"; 
    resVec = ut.multipleElemInSingleVector(query, con); 
    System.out.println("the vector values " + resVec); 
    msg = resVec.get(2).toString(); 
    System.out.println("message :" + msg); 

    // Alert.msgbox("alert", "alert", msg, 1); 

    activity.runOnUiThread(new Runnable() { 
     public void run() { 
      Toast.makeText(context, "Incoming number :" + msg, 
        Toast.LENGTH_LONG).show(); 
     } 
    }); 
}; 

} 

異常如下:

致命異常:螺紋166顯示java.lang.NullPointerException在 com.example.test.CustomPhoneStateListener $ ThreadProg.run(CustomPhoneStateListener.java:123)

我refered谷歌,發現使用asynctask類,但我不知道如何通過擴展使用asynctask類。此外它已經擴展了thread類。 我只想爲這個價值敬酒,就是這樣。

Android版本3.0以上

+0

你在哪寫這段代碼?內部活動? –

回答

0

我建議使用此一AsyncTask,如下所示。請注意,我在沒有IDE的情況下編寫了此代碼,因此可能會出現一些問題。我還建議使用Android內置的日誌系統。

new ProgAsyncTask().execute(); 

private class ProgAsyncTask extends AsyncTask<Void, Void, String> { 

    private static final String TAG = "ProgAsyncTask"; // Tag used in log msgs 
    @Override 
    protected String doInBackground(Void... params) { 
     Log.d(TAG, "come to run"); 
     con = db.getHmsConnection(); 
     String query = "select name,Phone,message from contactdetails where Phone='" + incomingNumber1 + "'"; 
     resVec = ut.multipleElemInSingleVector(query, con); 
     Log.d(TAG, "the vector values "+resVec); 
     msg = resVec.get(2).toString(); 
     Log.d(TAG, "message :" + msg); 
     return msg; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     Toast.makeText(context, "Incoming number :" + msg, Toast.LENGTH_LONG).show(); 
    } 
}