无法将字符串从Asynctask传递到片段
问题描述:
第一次使用片段。无法将字符串从Asynctask传递到片段
尝试将字符串值从传递给片段。
public class FillCust extends AsyncTask<String, String, List<Map<String, String>>> {
String z = "" ;
@Override
protected void onPostExecute(List<Map<String, String>> r) {
super.onPostExecute(r);
custName = String.valueOf(CustData.get(0).get("A"));
contactPerson = String.valueOf(CustData.get(0).get("B"));
telNo = String.valueOf(CustData.get(0).get("C"));
assignedBranch = String.valueOf(CustData.get(0).get("D"));
}
@Override
protected List<Map<String, String>> doInBackground(String... params) {
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = "Error in connection with SQL server";
} else {
String query = "select * from tblCustomer_Master where Customer_ID ='" + CustID + "'";
PreparedStatement ps = con.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
Map<String, String> datanum = new HashMap<String, String>();
datanum.put("A", rs.getString("Company_Name"));
datanum.put("B", rs.getString("Contact_Person"));
datanum.put("C", rs.getString("Tel_No"));
datanum.put("D", rs.getString("Assigned_Branch"));
CustData.add(datanum);
}
z = "Success";
}
} catch (Exception ex) {
z = "Error retrieving data from table";
}
return CustData;
}
}
我的界面
public String getCompanyname(String result) {
return custName ;
}
答
实现你在你的fragment
interface
,通过AsyncTask constructor
,调用接口方法onPostExecute
。
答
首先创建界面这样
public interface AsyncInterface {
public abstract void companyName(String result);
}
实现此对您的片段
,并呼吁从onPostExecute()这样这个接口方法。
fragment.companyName(result);
你不会从'doInBackground'返回任何东西。 – Vucko
是的,我正在从doInbackground返回List“CustData”! hw我可以使用列表通过界面传递吗? –
哦,对不起,我没有注意到它。那么,我个人喜欢使用[EventBus](https://github.com/greenrobot/EventBus)从'onPostExecute'发布自定义事件,因为它是异步的,您可以在获取新数据时更新需要更新的UI 。 – Vucko