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