Java AsyncTask任务onPostExecute()未执行?已尝试stackoverflow上已存在的所有答案
各位开发者和朋友, 我正在开发一个android应用程序,它需要读取JSON url。我正在使用异步任务。但是我不知道为什么onPostExecute()没有执行。我成功地解析了json。唯一剩下的就是返回字符串(具有解析json文本) 这是我的密码:Java AsyncTask任务onPostExecute()未执行?已尝试stackoverflow上已存在的所有答案,java,android,json,parsing,android-asynctask,Java,Android,Json,Parsing,Android Asynctask,各位开发者和朋友, 我正在开发一个android应用程序,它需要读取JSON url。我正在使用异步任务。但是我不知道为什么onPostExecute()没有执行。我成功地解析了json。唯一剩下的就是返回字符串(具有解析json文本) 这是我的密码: package com.vijay.jsonwizard.demo.activities; import android.content.Intent; import android.os.AsyncTask; import android.o
package com.vijay.jsonwizard.demo.activities;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.vijay.jsonwizard.demo.R;
import com.vijay.jsonwizard.activities.JsonFormActivity;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends ActionBarActivity {
private static final int REQUEST_CODE_GET_JSON = 1;
private static final String TAG = "MainActivity";
private static final String DATA_JSON_PATH = "http://jatinderbhola.in/phppractice/data.json";
String json;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button_start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, JsonFormActivity.class);
BackgroundTask task = new BackgroundTask();
task.execute();
if (json != null) {
intent.putExtra("json", json);
startActivityForResult(intent, REQUEST_CODE_GET_JSON);
} else {
Toast.makeText(getApplicationContext(), "Error!!", Toast.LENGTH_LONG).show();
}
}
});
}
private class BackgroundTask extends AsyncTask < String, String, String > {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String...params) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(DATA_JSON_PATH)
.build();
Response response = null;
try {
response = client.newCall(request).execute();
} catch (IOException e) {
e.printStackTrace();
}
try {
//Log.d("Respose", response.body().string());
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String data) {
set_json(data);
}
}
private void set_json(String s) {
// json = s;
Toast.makeText(getApplicationContext(), "I'm in!!", Toast.LENGTH_LONG).show();
}
}
将下一个代码移到执行后阶段:
Intent intent = new Intent(MainActivity.this, JsonFormActivity.class);
if (json != null) {
intent.putExtra("json", json);
startActivityForResult(intent, REQUEST_CODE_GET_JSON);
} else {
Toast.makeText(getApplicationContext(), "Error!!", Toast.LENGTH_LONG).show();
}
}
有什么异常或错误吗?没有!!。。我更新post.Log.d(“Respose”,response.body().string());取消注释时它是否正在执行?请确保清单中的Internet权限尝试将日志放入
onPostExecute
方法,并查看是否调用它。保存我的一天!!谢谢你,伙计。很高兴我能帮上忙!:)
Intent intent = new Intent(MainActivity.this, JsonFormActivity.class);
if (json != null) {
intent.putExtra("json", json);
startActivityForResult(intent, REQUEST_CODE_GET_JSON);
} else {
Toast.makeText(getApplicationContext(), "Error!!", Toast.LENGTH_LONG).show();
}
}