Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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
如何在片段中使用GetJsonFromUrlTask.java_Java_Android_Listview_Android Studio_Android Fragments - Fatal编程技术网

如何在片段中使用GetJsonFromUrlTask.java

如何在片段中使用GetJsonFromUrlTask.java,java,android,listview,android-studio,android-fragments,Java,Android,Listview,Android Studio,Android Fragments,我从一个网站上找到了下面的代码,它似乎对我的android应用程序有所帮助。但问题是,下面的代码仅用于活动,我需要在片段中运行代码。顺便说一句,我的应用程序是从在线数据库下载图像并将其存储到listview 我该怎么办 这是我要使用的代码: public class GetJsonFromUrlTask extends AsyncTask<Void, Void, String> { private Activity activity; private String url; pri

我从一个网站上找到了下面的代码,它似乎对我的android应用程序有所帮助。但问题是,下面的代码仅用于活动,我需要在片段中运行代码。顺便说一句,我的应用程序是从在线数据库下载图像并将其存储到listview

我该怎么办

这是我要使用的代码:

public class GetJsonFromUrlTask extends AsyncTask<Void, Void, String> {

private Activity activity;
private String url;
private ProgressDialog dialog;
private final static String TAG = GetJsonFromUrlTask.class.getSimpleName();

public GetJsonFromUrlTask(Activity activity, String url) {
    super();
    this.activity = activity;
    this.url = url;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    // Create a progress dialog
    dialog = new ProgressDialog(activity);
    // Set progress dialog title
    dialog.setTitle("Getting JSON DATA");
    // Set progress dialog message
    dialog.setMessage("Loading...");
    dialog.setIndeterminate(false);
    // Show progress dialog
    dialog.show();
}

@Override
protected String doInBackground(Void... params) {

    // call load JSON from url method
    return loadJSON(this.url).toString();
}

@Override
protected void onPostExecute(String result) {
    ((CategoryListViewActivity) activity).parseJsonResponse(result);
    dialog.dismiss();
    Log.i(TAG, result);
}

public JSONArray loadJSON(String url) {
    // Creating JSON Parser instance
    JSONGetter jParser = new JSONGetter();

    // getting JSON string from URL
    JSONArray json = jParser.getJSONFromUrl(url);

    return json;
}

private class JSONGetter {

    private InputStream is = null;
    private JSONArray jObj = null;
    private String json = "";

    // constructor
    public JSONGetter() {

    }

    public JSONArray getJSONFromUrl(String url) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        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();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONArray(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jObj;

    }
}
}
公共类GetJsonFromUrlTask扩展了AsyncTask{
私人活动;
私有字符串url;
私人对话;
私有最终静态字符串标记=GetJsonFromUrlTask.class.getSimpleName();
公共GetJsonFromUrlTask(活动,字符串url){
超级();
这个。活动=活动;
this.url=url;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//创建一个进度对话框
dialog=新建进度对话框(活动);
//设置进度对话框标题
setTitle(“获取JSON数据”);
//设置进度对话框消息
setMessage(“加载…”);
dialog.setUndeterminate(false);
//显示进度对话框
dialog.show();
}
@凌驾
受保护字符串doInBackground(无效…参数){
//从url方法调用LoadJSON
返回loadJSON(this.url).toString();
}
@凌驾
受保护的void onPostExecute(字符串结果){
((CategoryListViewActivity)活动);
dialog.dismise();
Log.i(标签、结果);
}
公共JSONArray加载JSON(字符串url){
//创建JSON解析器实例
JSONGetter jParser=新的JSONGetter();
//从URL获取JSON字符串
JSONArray json=jParser.getJSONFromUrl(url);
返回json;
}
私有类JSONGetter{
私有InputStream为空;
私有JSONArray jObj=null;
私有字符串json=“”;
//建造师
公共JSONGetter(){
}
公共JSONArray getJSONFromUrl(字符串url){
//发出HTTP请求
试一试{
//defaultHttpClient
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url);
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
BufferedReader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),
8);
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
json=sb.toString();
}捕获(例外e){
Log.e(“缓冲区错误”,“错误转换结果”+e.toString());
}
//尝试将字符串解析为JSON对象
试一试{
jObj=新的JSONArray(json);
}捕获(JSONException e){
Log.e(“JSON解析器”,“错误解析数据”+e.toString());
}
//返回JSON字符串
返回jObj;
}
}
}

在片段中使用AsyncTask有一个简单的步骤,如下所示

将代码放在activityCreateview上

new GetJsonFromUrlTask(getActivity(), mListView).execute("");
getActivity()
是在片段类中获取活动上下文的方法

注意:当您从网站上找到代码时,此代码是一个异步任务类,您可以将此代码调用到
活动
片段
,以及任何其他类

更改代码

public class GetJsonFromUrlTask extends AsyncTask<Void, Void, String> {

private Context activity;
private String url;
private ProgressDialog dialog;
private final static String TAG = GetJsonFromUrlTask.class.getSimpleName();

public GetJsonFromUrlTask(Context activity, String url) {
    super();
    this.activity = activity;
    this.url = url;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    // Create a progress dialog
    dialog = new ProgressDialog(activity);
    // Set progress dialog title
    dialog.setTitle("Getting JSON DATA");
    // Set progress dialog message
    dialog.setMessage("Loading...");
    dialog.setIndeterminate(false);
    // Show progress dialog
    dialog.show();
}

@Override
protected String doInBackground(Void... params) {

    // call load JSON from url method
    return loadJSON(this.url).toString();
}

@Override
protected void onPostExecute(String result) {

    dialog.dismiss();
    Log.i(TAG, result);
}

public JSONArray loadJSON(String url) {
    // Creating JSON Parser instance
    JSONGetter jParser = new JSONGetter();

    // getting JSON string from URL
    JSONArray json = jParser.getJSONFromUrl(url);

    return json;
}

private class JSONGetter {

    private InputStream is = null;
    private JSONArray jObj = null;
    private String json = "";

    // constructor
    public JSONGetter() {

    }

    public JSONArray getJSONFromUrl(String url) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        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();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONArray(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jObj;

    }
}
}
公共类GetJsonFromUrlTask扩展了AsyncTask{
私人语境活动;
私有字符串url;
私人对话;
私有最终静态字符串标记=GetJsonFromUrlTask.class.getSimpleName();
公共GetJsonFromUrlTask(上下文活动,字符串url){
超级();
这个。活动=活动;
this.url=url;
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//创建一个进度对话框
dialog=新建进度对话框(活动);
//设置进度对话框标题
setTitle(“获取JSON数据”);
//设置进度对话框消息
setMessage(“加载…”);
dialog.setUndeterminate(false);
//显示进度对话框
dialog.show();
}
@凌驾
受保护字符串doInBackground(无效…参数){
//从url方法调用LoadJSON
返回loadJSON(this.url).toString();
}
@凌驾
受保护的void onPostExecute(字符串结果){
dialog.dismise();
Log.i(标签、结果);
}
公共JSONArray加载JSON(字符串url){
//创建JSON解析器实例
JSONGetter jParser=新的JSONGetter();
//从URL获取JSON字符串
JSONArray json=jParser.getJSONFromUrl(url);
返回json;
}
私有类JSONGetter{
私有InputStream为空;
私有JSONArray jObj=null;
私有字符串json=“”;
//建造师
公共JSONGetter(){
}
公共JSONArray getJSONFromUrl(字符串url){
//发出HTTP请求
试一试{
//defaultHttpClient
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url);
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
试一试{
BufferedReader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),
8);
StringBuilder sb=新的StringBuilder();
字符串行=null;