简体   繁体   English

致命异常:AsyncTask#1:java.lang.RuntimeException:执行doInBackground()时发生错误

[英]FATAL EXCEPTION: AsyncTask #1 : java.lang.RuntimeException: An error occured while executing doInBackground()

I had error when build my code on android device. 在Android设备上构建代码时出现错误。 its the error report 错误报告

FATAL EXCEPTION: AsyncTask #1 Process: com.example.guntu, PID: 1248 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:304) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference at com.example.guntu.List$DownloadJSON.doInBackground(List.java:74) at com.example.guntu.List$DownloadJSON.doInBackground(List.java:49) at android.os.Asyn 致命异常:AsyncTask#1进程:com.example.guntu,PID:1248 java.lang.RuntimeException:在Java上的android.os.AsyncTask $ 3.done(AsyncTask.java:304)执行doInBackground()时发生错误。 android上的util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)在java.util.concurrent.FutureTask.setException(FutureTask.java:222)在java.util.concurrent.FutureTask.run(FutureTask.java:242)在Android .os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java: 587)at java.lang.Thread.run(Thread.java:818)原因:java.lang.NullPointerException:尝试调用虚拟方法'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String )''放在com.example.guntu.List $ DownloadJSON.doInBackground(List.java:49)上com.example.guntu.List $ DownloadJSON.doInBackground(List.java:74)上的空对象引用上。阿辛 cTask$2.call(AsyncTask.java:292) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) 09-06 07:37:48.656 1248-1248/com.example.guntu E/WindowManager: android.view.WindowLeaked: Activity com.example.guntu.List has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{35557537 VE.... R......D 0,0-684,322} that was originally added here at android.view.ViewRootImpl.(ViewRootImpl.java:364) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:271) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) at android.app.Dialog.show(Dialog.java:298) at com.example.guntu.List$DownloadJSON.onPreExecute(List.java:62) at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:591 cTask $ 2.call(AsyncTask.java:292)at java.util.concurrent.FutureTask.run(FutureTask.java:237)at android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)at java.util .concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)at java.lang.Thread.run(Thread.java:818)09-06 07:37:48.656 1248-1248 / com.example.guntu E / WindowManager:android.view.WindowLeaked:活动com.example.guntu.List泄漏了窗口com.android.internal.policy.impl.PhoneWindow $ DecorView {35557537 VE .... R ...... D 0,0-684,322},最初是在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java :271),位于android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85),位于android.app.Dialog.show(Dialog.java:298),位于com.example.guntu.List $ DownloadJSON.onPreExecute(List.java: 62)在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:591 ) at android.os.AsyncTask.execute(AsyncTask.java:539) at com.example.guntu.List.onCreate(List.java:44) at android.app.Activity.performCreate(Activity.java:6033) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2397) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1310) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5268) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697) )的android.os.AsyncTask.execute(AsyncTask.java:539)的com.example.guntu.List.onCreate(List.java:44)的android.app.Activity.performCreate(Activity.java:6033)的android .app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2397)在android.app.ActivityThread在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1310)在android.os.Handler.dispatchMessage(Handler.java:102)处访问$ 800(ActivityThread.java:151)在android.os.Looper.loop( Looper.java:135),位于android.app.ActivityThread.main(ActivityThread.java:5268),位于java.lang.reflect.Method.invoke(本机方法),位于java.lang.reflect.Method.invoke(Method.java: 372),位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:902),位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

here is my code 这是我的代码

 private class DownloadJSON extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Create a progressdialog
        mProgressDialog = new ProgressDialog(List.this);
        // Set progressdialog title
        mProgressDialog.setTitle("Android JSON Parse Tutorial");
        // Set progressdialog message
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        // Show progressdialog
        mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        // Create an array
        arraylist = new ArrayList<HashMap<String, String>>();
        // Retrieve JSON Objects from the given URL address
        jsonobject = JSONFunction
                .getJSONfromURL("http://localhost/atm_db/json/json.php");
        try {
            // Locate the array name in JSON
            jsonarray = jsonobject.getJSONArray("");

            for (int i = 0; i < jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                jsonobject = jsonarray.getJSONObject(i);
                // Retrive JSON Objects
                map.put("nama_atm", jsonobject.getString("nama_atm"));
                map.put("alamat", jsonobject.getString("alamat"));
                map.put("latitude", jsonobject.getString("latitude"));
                map.put("longtitude", jsonobject.getString("longtitude"));
                // Set the JSON Objects into the array
                arraylist.add(map);
            }
        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

It looks like jsonobject.getJSONArray(""); 看起来像jsonobject.getJSONArray(""); is throwing the error due to the fact that jsonobject is null. 由于jsonobject为null的事实而抛出错误。

You will want to double check that you are getting data back and if so the format of that JSON data. 您将需要仔细检查是否正在获取数据,如果是,则返回该JSON数据的格式。

Replace DownloadJSON with the following code : 将DownloadJSON替换为以下代码:

    public class DownloadJSON extends AsyncTask<String ,Integer , JSONObject> {

    DownloadJSON(){
        // Create an array
        arraylist = new ArrayList<HashMap<String, String>>();
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Create a progressdialog
        mProgressDialog = new ProgressDialog(List.this);
        // Set progressdialog title
        mProgressDialog.setTitle("Android JSON Parse Tutorial");
        // Set progressdialog message
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        // Show progressdialog
        mProgressDialog.show();
    }

    @Override
    protected JSONObject doInBackground(String... params) {
        // Retrieve JSON Objects from the given URL address
        jsonobject = JSONFunction.getJSONfromURL("http://localhost/atm_db/json/json.php");
        return jsonobject;
    }

    @Override
    protected void onPostExecute(JSONObject s) {
        super.onPostExecute(s);
        try {
            // Locate the array name in JSON
            jsonarray = jsonobject.getJSONArray("PUT KEY OF JSON HERE");

            for (int i = 0; i < jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                jsonobject = jsonarray.getJSONObject(i);
                // Retrive JSON Objects
                map.put("nama_atm", jsonobject.getString("nama_atm"));
                map.put("alamat", jsonobject.getString("alamat"));
                map.put("latitude", jsonobject.getString("latitude"));
                map.put("longtitude", jsonobject.getString("longtitude"));
                // Set the JSON Objects into the array
                arraylist.add(map);
            }
        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
    }


    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
    }
}

Note : 注意 :

1 . 1。 Before returning jsonobject from doInBackground() be sure that you are receiving valid jsonobject from the URL you mentioned . 从doInBackground()返回jsonobject之前,请确保您从提到的URL接收到有效的jsonobject。

2 . 2。 While getting jsonArray from jsonobject use key of the array . 从jsonobject获取jsonArray时,请使用array的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 致命异常:AsyncTask#1 java.lang.RuntimeException:在执行doInBackground()并将图像发送到服务器时发生错误 - FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground(), while sending an image to the Server E / AndroidRuntime:致命例外:AsyncTask#1 java.lang.RuntimeException:执行doInBackground()时发生错误 - E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() 致命异常:AsyncTask#4 ... java.lang.RuntimeException:执行doInBackground()时发生错误 - FATAL EXCEPTION: AsyncTask #4 …java.lang.RuntimeException: An error occured while executing doInBackground() 如何解决此问题:执行doInBackground()时发生致命异常Asynctask#1 java.lang.RuntimeException错误 - how to solve this : Fatal Exception Asynctask #1 java.lang.RuntimeException error occured while executing doInBackground() 致命异常Asynctask#1执行doInBackground()时发生java.lang.RuntimeException错误 - Fatal Exception Asynctask #1 java.lang.RuntimeException error occured while executing doInBackground() java.lang.RuntimeException:在执行doInBackground()致命错误时发生错误:AsyncTask#2 - java.lang.RuntimeException: An error occured while executing doInBackground() FATAL EXCEPTION: AsyncTask #2 致命异常:AsyncTask#1:java.lang.RuntimeException:执行doInBackground()时发生错误 - FATAL EXCEPTION: AsyncTask #1:java.lang.RuntimeException: An error occured while executing doInBackground() 致命异常:AsyncTask#2 java.lang.RuntimeException:执行doInBackground()时发生错误 - FATAL EXCEPTION: AsyncTask #2 java.lang.RuntimeException: An error occured while executing doInBackground() AsyncTask#1 java.lang.RuntimeException:执行doInBackground()时发生错误 - AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground() 致命异常:asynctask#1 java.lang.runtimeException:执行doinbackground时发生错误 - fatal exception : asynctask #1 java.lang.runtimeException: an error occured while excuting doinbackground
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM