Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android异步任务获取错误_Android_Android Asynctask - Fatal编程技术网

Android异步任务获取错误

Android异步任务获取错误,android,android-asynctask,Android,Android Asynctask,我刚从我的应用程序连接到互联网,所以我犯了这个错误,我的代码在下面 08-28 14:43:29.705: E/AndroidRuntime(17341): FATAL EXCEPTION: AsyncTask #1 08-28 14:43:29.705: E/AndroidRuntime(17341): java.lang.RuntimeException: An error occured while executing doInBackground() 08-28 14:43:29.705

我刚从我的应用程序连接到互联网,所以我犯了这个错误,我的代码在下面

08-28 14:43:29.705: E/AndroidRuntime(17341): FATAL EXCEPTION: AsyncTask #1 08-28 14:43:29.705: E/AndroidRuntime(17341): java.lang.RuntimeException: An error occured while executing doInBackground() 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.os.AsyncTask$3.done(AsyncTask.java:200) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.lang.Thread.run(Thread.java:1019) 08-28 14:43:29.705: E/AndroidRuntime(17341): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.os.Handler.(Handler.java:121) 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.app.Dialog.(Dialog.java:101) 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.app.AlertDialog.(AlertDialog.java:63) 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.app.AlertDialog.(AlertDialog.java:59) 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.app.AlertDialog$Builder.create(AlertDialog.java:807) 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.app.AlertDialog$Builder.show(AlertDialog.java:822) 08-28 14:43:29.705: E/AndroidRuntime(17341): at com.makkuzu.gps.tracker.Main.UyariPencerem(Main.java:129) 08-28 14:43:29.705: E/AndroidRuntime(17341): at com.makkuzu.gps.tracker.Main.access$2(Main.java:124) 08-28 14:43:29.705: E/AndroidRuntime(17341): at com.makkuzu.gps.tracker.Main$SaveDataTask.doInBackground(Main.java:108) 08-28 14:43:29.705: E/AndroidRuntime(17341): at com.makkuzu.gps.tracker.Main$SaveDataTask.doInBackground(Main.java:1) 08-28 14:43:29.705: E/AndroidRuntime(17341): at android.os.AsyncTask$2.call(AsyncTask.java:185) 08-28 14:43:29.705: E/AndroidRuntime(17341): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 08-28 14:43:29.705: E/AndroidRuntime(17341): ... 4 more 和库拉尼奇康特罗

 private boolean KullaniciKontrol() {
    // TODO Auto-generated method stub
// http post
try {
    String result = "";
    ArrayList<NameValuePair> nameValPairs = new ArrayList<NameValuePair>();
    nameValPairs.add(new BasicNameValuePair("name", userName.getText().toString()));
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(
            "http://mywebsite.com/kullanici_kontrol.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValPairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    try {
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
    } catch (Exception err) {
    }
    try {
        JSONArray jArray = new JSONArray(result);
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            String icerik = "Böyle bir kullanici zaten mevcut lütfen farklı bir kullanıcı adı deneyin.";
            UyariPencerem("Uyarı! ", icerik);
            return false;
        }
    } catch (JSONException er_json) {
    }
} catch (Exception er) {
}
return true;
}
感谢您的帮助……

UyariPencerem(“Uyarı!”,icerik)
显示一个警报对话框
UyariPencerem(“Uyarı!”,icerik)
被称为表单
doInbackground

doInbackground
在后台线程上调用。无法从
doInbackground
更新ui

返回
doinabcground
中的背景计算结果。
doInbackground
计算的结果是
onPostExecute
的一个参数。基于
onPostExecute

有关更多信息,请查看文档

您正在调用
UyariPencerem(“Uyarı!”,icerik)doInBackGround()
catch块中的code>,它是工作线程。它正在执行UI操作(显示对话框),而您正在非UI线程中执行该操作。因此,我建议您使用

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            UyariPencerem("Uyarı! ",icerik);

                        }
                    });    

这有什么用呢?这是KullaniciKontrol()
?张贴相同的代码。看起来您正在从线程更新ui如果您在
doInBackground
中操作ui,则将任务的doInBackground方法放入
runOnUiThread(…)
。。或者如果可能的话,在
onPostExecute
islemTamam()中,这个
islemTamam()中包含什么?我添加了Uyaripencerem()KullaniciKontrol()和islemTamam(),那么我该怎么做呢?@makkuzu返回
doInbackground
中的结果。在
onpostExecute
中接收并更新ui@makkuzu不客气。始终记住不要从
线程更新ui
异步任务doInbackground
如果asyctask不是活动类的内部类,则需要
runOnUiThread的活动上下文@makkuzu是活动类的内部类还是单独的类file@makkuzu,将发布的代码保留为引用,您必须使用它两次,一次用于islemTamam();在试块中,对于UyariPencerem(“Uyarı!”,icerik);在doInBackground()的catch块中。
 private boolean KullaniciKontrol() {
    // TODO Auto-generated method stub
// http post
try {
    String result = "";
    ArrayList<NameValuePair> nameValPairs = new ArrayList<NameValuePair>();
    nameValPairs.add(new BasicNameValuePair("name", userName.getText().toString()));
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(
            "http://mywebsite.com/kullanici_kontrol.php");
    httppost.setEntity(new UrlEncodedFormEntity(nameValPairs));
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    try {
        BufferedReader reader = new BufferedReader(
                new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
    } catch (Exception err) {
    }
    try {
        JSONArray jArray = new JSONArray(result);
        for (int i = 0; i < jArray.length(); i++) {
            JSONObject json_data = jArray.getJSONObject(i);
            String icerik = "Böyle bir kullanici zaten mevcut lütfen farklı bir kullanıcı adı deneyin.";
            UyariPencerem("Uyarı! ", icerik);
            return false;
        }
    } catch (JSONException er_json) {
    }
} catch (Exception er) {
}
return true;
}
          private void islemTamam() {

    Builder uyariPenceresi = new AlertDialog.Builder(this);
    uyariPenceresi.setTitle("İşlem Tamam! ");
    uyariPenceresi.setMessage("Bilgiler başarıyla kaydedilmiştir. \nKullanıcı adınız :" + userName.getText().toString() + "\nşifreniz:"+ passOne.getText().toString()+ "\nTelefon konumunuzu öğrenmek için \ntelefonumnerede.makkuzu.com web sitesini ziyaret ediniz. ");
    uyariPenceresi.setCancelable(true);
    uyariPenceresi.setPositiveButton("Tamam",new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int id) {
            someData=getSharedPreferences(filename,0);
            Editor myEditor=someData.edit();
            myEditor.putString("name", userName.getText().toString()); 
            myEditor.putBoolean("isFirtsTime", false); 
            myEditor.commit();
            startService(new Intent(Main.this, GPSService.class));
            Main.this.finish();
        }
      });
        uyariPenceresi.show();


}
Can't create handler inside thread that has not called Looper.prepare()
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            UyariPencerem("Uyarı! ",icerik);

                        }
                    });