【发布时间】:2015-12-03 12:19:07
【问题描述】:
我在活动旁边有一个片段。我想创建一个单独扩展 AsyncTask 的类。我如何从片段中执行 AsyncTask 并在片段中获取 Asyntask 类的值。 例如假设它是我的片段类
public class FeePayFragment extends android.support.v4.app.Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootview = inflater.inflate(R.layout.fragment_fee_pay, container, false);}
}
这里是异步任务
public class AsyFeeDues extends AsyncTask<Void,Void,Void> {
JSONArray rootJsonArray;
JSONObject rootJsonObject;
private String compCode,session,admNo;
boolean checkSeverResponse;
public AsyFeeDues(String compCode, String session, String admNo) {
this.compCode = compCode;
this.session = session;
this.admNo = admNo;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Please Wait....");
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
RestApi api = new RestApi();
try {
rootJsonObject = api.GetFeeDues(compCode, session, admNo);
checkSeverResponse = (rootJsonObject != null);
if(checkSeverResponse) {
boolean isSuccess = rootJsonObject.optBoolean(TAG_SUCESSFULL);
rootJsonArray = rootJsonObject.optJSONArray(TAG_VALUE);
for (int i = 0; i < rootJsonArray.length(); i++) {
JSONObject jsonObject = rootJsonArray.optJSONObject(i);
int amount = jsonObject.optInt(TAG_AMOUNT);
if (amount > 0) {
int period = jsonObject.optInt(TAG_PERIOD);
if (period <= periodMonth) {
String feeCode = jsonObject.optString(TAG_FEECODE);
String feeHead = jsonObject.optString(TAG_FEEHEAD);
String periodName = jsonObject.optString(TAG_PERIODNAME);
boolean checkFeeKey = feeDuesDetails.containsKey(feeHead);
if (checkFeeKey) {
totalBalanceAmount = totalBalanceAmount + amount;
Map p = feeDuesDetails.get(feeHead);
int previousAmount = (Integer) p.get(TAG_AMOUNT);
int upDateAmount = previousAmount + amount;
feeDuesDetails.get(feeHead).put(TAG_AMOUNT, upDateAmount);
} else {
totalBalanceAmount = totalBalanceAmount + amount;
map = new HashMap();
map.put(TAG_AMOUNT, amount);
feeDuesDetails.put(feeHead, map);
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
if(checkSeverResponse) {
if (feeDuesDetails.size() > 1) {
Set keys = feeDuesDetails.keySet();
for (Iterator i = keys.iterator(); i.hasNext(); ) {
String key = (String) i.next();
feeHead.add(key);
Map map = feeDuesDetails.get(key);
int feeHeadWiseAmount = (Integer) map.get(TAG_AMOUNT);
feeAmount.add(feeHeadWiseAmount);
}
feeDuesAdapter = new FeeDuesAdapter(getActivity(), feeHead, feeAmount);
feeDuesList.setAdapter(feeDuesAdapter);
totalAmountInRs.setText(String.valueOf(totalBalanceAmount));
paybleAmount.setText("Total Payable Amount");
}
else {
Toast.makeText(getActivity(), "Your fee paid up to this month", Toast.LENGTH_LONG).show();
}
}
else {
Toast.makeText(getActivity(), "Server not response", Toast.LENGTH_LONG).show();
}
}
我想要在我的片段中检索到 doInBackground 方法变量中的所有值,例如费用代码、费用头、周期等
【问题讨论】:
-
请添加接口并从您的 onPostExecute 方法中调用它并在您的片段中获得回调
-
这个答案可能对你有帮助enter link description here
-
stackoverflow.com/questions/13815807/… 类型的问题已在 stackoverflow 上得到解决][1]
标签: java android android-fragments android-asynctask