안녕하세요. StackOver 플로 프로,치명적인 예외 AsyncTask # 1 및 Android doInBackground()
여기에 약간의 도움이 필요합니다. 나는 PHP 스크립트를 통해 MySql 데이터베이스를 호출하는 안드로이드 응용 프로그램을 실행하고 있습니다. 응용 프로그램을 실행할 때 AsyncTask # 1에 의한 Natal 포인터 예외로 인해 치명적인 예외 오류가 발생합니다. 그것은 doInBackground를 실행하는 동안 발생했다. 이것은 MyBringBack의 지침서입니다. 내가 이것을 며칠 동안 알아 내려고 노력했기 때문에 나는이 문제에 대해 정말로 머리를 감쌀 필요가있다. Log.d 문장의 대부분을 제거/주석 처리하면 정상적으로 실행되지만 JSON 응답에서 일어나는 일들에 대한 태그를 볼 수 없으며, 코드는 아래에 나열되어 있습니다. 누군가가 이것을 알아 내거나 무엇을 말해 줄 수 있습니까? 코드가 잘못되었습니다. 27 : 47.818 : E/JSON 파서 (1041) : 오류 해석 데이터 org.json.JSONException : 여기
는 로그 캣에서 에러 로그10-25 09 인 값 어레이 (2) 형태의 java.lang.String을 JSONObject로 변환 할 수 없습니다. 10-25 09 : 27 : 47.818 : W/dalvikvm (1041) : threadid = 11 : catch되지 않은 예외 (그룹 = 0xb1b06ba8)로 스레드 종료 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : 프로세스 : com.bobcatservice, PID : 1041 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : 비동기 태스크 # 1 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.lang.RuntimeException : doInBackg 실행 중 오류가 발생했습니다. 둥근() 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : android.os.AsyncTask $ 3.done (AsyncTask.java:300) 10-25 09 : 27 : 47.828 : E/AndroidRuntime 1041) : java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:355) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.util.concurrent.FutureTask.setException (FutureTask. Java : 222) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.util.concurrent.FutureTask.run (FutureTask.java:242) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.util.concurrent.ThreadPoolExecutor.runWorker에서 (ThreadPoolExecutor.java:1112) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.util.concurrent.ThreadPoolExecutor $ Worker.ru에서 (ThreadPoolExecutor.java:817) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.lang.Thread.run (Thread.java:841) E/AndroidRuntime (1041) : 원인 : java.lang.NullPointerException 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : com.bobcatservice.Login $ AttemptLogin.doInBackground (Login.java:126) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : com.bobcatservice.Login에서 $ AttemptLogin.doInBackground (Login.java:1) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : android.os.AsyncTask $ 2.call (AsyncTask.java:288) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : java.util.concurrent.FutureTask.run (FutureTask.java:237) 10-25 09 : 27 : 47.828 : E/AndroidRuntime (1041) : ... 자세히 알아보기 10-25 09 : 27 : 49.968 : E/WindowManager (1041) : android.vie w.WindowLeaked : Activity com.bobcatservice.Login이 원래 com.android.internal.policy.impl.PhoneWindow $ DecorView {b1e8e430 VE .... R ...... D 0,0-684,192}의 창을 유출했습니다. 여기에 추가 10-25 09 : 27 : 49.968 : E/WindowManager (1041) : android.view.ViewRootImpl. (ViewRootImpl.java:348) 10-25 09 : 27 : 49.968 : E/WindowManager (1041) : android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:248) 10-25 09 : 27 : 49.968 : E/WindowManager (1041) : android.view.WindowManagerImpl.addView (WindowManagerImpl.java:69) 10- 25 09 : 27 : 49.968 : E/WindowManager (1041) : android.app.Dialog.show (대화 상자.자바 : 나는/코멘트가 Log.d 문 그것을 가장 잘 실행됩니다 제거 할 경우 286) 여기
그리고는 질문
//AsyncTask is a seperate thread than the thread that runs the GUI
//Any type of networking should be done with asynctask.
class AttemptLogin extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
boolean failure = false;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Login.this);
pDialog.setMessage("Attempting login...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub
// Check for success tag
int success;
String username = user.getText().toString();
String password = pass.getText().toString();
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
Log.d("request!", "starting");
// getting product details by making HTTP request
JSONObject json = jsonParser.makeHttpRequest(
LOGIN_URL, "POST", params);
try {
// check your log for json response
Log.d("Login attempt", json.toString());
// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
Log.d("Login Successful!", json.toString());
Intent i = new Intent(Login.this, Welcome.class);
finish();
startActivity(i);
return json.getString(TAG_MESSAGE);
}else{
Log.d("Login Failure!", json.getString(TAG_MESSAGE));
return json.getString(TAG_MESSAGE);
}
} 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 product deleted
pDialog.dismiss();
if (file_url != null){
Toast.makeText(Login.this, file_url, Toast.LENGTH_LONG).show();
}
}
}
}
안녕하세요 aga, 디버그 모드로 갔을 때 JSONObject json = jsonParser.makeHttpRequest (Login_URL, "POST", params) 문에 중단 점을 설정했습니다. 나는 json 결과가 null인데, 문제가 무엇인지 확신 할 수 없다. –
Aga, cyphering 후, 귀하의 의견을 철저하게 읽고 독서, 내 PHP 파일에 가서 스크립트 내에서 문제가 발견, 나는 JSON을 망치고 있던 정보를 출력했다 일부 var 덤프했다 –