Android 如何将数据从活动的异步任务传递到片段

Android 如何将数据从活动的异步任务传递到片段,android,android-fragments,android-asynctask,Android,Android Fragments,Android Asynctask,在activity中,我使用async任务从web服务获取数据,在解析如何将数据从activity发送到fragment之后,我尝试使用bundle,但没有成功。如果它直接来自activity,则bundle工作正常 但是如何将异步任务中的数据从活动传递到片段呢 这是我的异步任务 /** * Async task class to get json by making HTTP call * */ private class GetQuotes extends AsyncTask<Vo

在activity中,我使用async任务从web服务获取数据,在解析如何将数据从activity发送到fragment之后,我尝试使用bundle,但没有成功。如果它直接来自activity,则bundle工作正常 但是如何将异步任务中的数据从活动传递到片段呢 这是我的异步任务

/**
 * Async task class to get json by making HTTP call
 * */
private class GetQuotes extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... arg0) {
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        // Making a request to url and getting response
        String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);
        System.out.println(jsonStr);
        Log.d("Response: ", "> " + jsonStr);

        if (jsonStr != null) {
            try {

                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                pages = jsonObj.optJSONArray(TAG_PAGES);

                System.out.println(pages);
                JSONObject c = pages.getJSONObject(0);
                caption0 = c.getString(TAG_CAPTION);     
                quote0 = c.getString(TAG_QUOTE);
                System.out.println("obj1" + caption0 + quote0);

                JSONObject c1 = pages.getJSONObject(1);
                caption1 = c1.getString(TAG_CAPTION);
                quote1 = c1.getString(TAG_QUOTE);
                System.out.println("obj2" + caption1 + quote1);

                JSONObject c2 = pages.getJSONObject(0);
                caption2 = c2.getString(TAG_CAPTION);
                quote2 = c2.getString(TAG_QUOTE);
                System.out.println("obj3" + caption2 + quote2);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog

    }

}
/**
*异步任务类通过HTTP调用获取json
* */
私有类GetQuotes扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
//创建服务处理程序类实例
ServiceHandler sh=新的ServiceHandler();
//向url发出请求并获得响应
字符串jsonStr=sh.makeServiceCall(url,ServiceHandler.GET);
系统输出打印LN(jsonStr);
Log.d(“响应:”、“>”+jsonStr);
if(jsonStr!=null){
试一试{
JSONObject jsonObj=新的JSONObject(jsonStr);
//获取JSON数组节点
pages=jsonObj.optJSONArray(标记页面);
系统输出打印项次(页);
JSONObject c=pages.getJSONObject(0);
caption0=c.getString(TAG_CAPTION);
quote0=c.getString(TAG_QUOTE);
系统输出打印项次(“obj1”+标题0+quote0);
JSONObject c1=pages.getJSONObject(1);
caption1=c1.getString(TAG_CAPTION);
quote1=c1.getString(TAG_QUOTE);
系统输出打印项次(“obj2”+标题1+quote1);
JSONObject c2=pages.getJSONObject(0);
caption2=c2.getString(TAG_CAPTION);
quote2=c2.getString(TAG_QUOTE);
系统输出打印项次(“obj3”+标题2+quote2);
}捕获(JSONException e){
e、 printStackTrace();
}
}否则{
Log.e(“ServiceHandler”,“无法从url获取任何数据”);
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//关闭进度对话框
}
}

通过捆绑包传递数据 :

在fragment类中,从bundle检索数据:

Bundle bundle = getArguments();
String caption0 = bundle.getString("CAPTION");
String quote0 = bundle.getString("QUOTE");

在asynchtask的onPostExecute中添加意图代码..您能看一下我的活动吗?好的,现在用您的类名详细解释一下您想要实现的目标。您在哪里定义了“GetQuotes”类?我想将数据从活动传递到activity bundle.putString中的SampleFragment1i;正在获取null指针异常,如您在异步任务中看到的caption0值分配不在Activity中您在哪里创建了绑定??在onPostExecute()方法中创建捆绑包对象。
Bundle bundle = getArguments();
String caption0 = bundle.getString("CAPTION");
String quote0 = bundle.getString("QUOTE");