2016-07-29 19 views
0

初めてフラグメントを処理します。文字列を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 ; 
} 
+0

あなたは 'doInBackground'から何も返されません。 – Vucko

+0

はい私はdoInbackgroundからList "CustData"を返しています!私はインターフェイスを介して渡すためにリストを使用できますか? –

+0

申し訳ありませんが、私は何とかそれに気づきませんでした。さて、非同期で、新しいデータをフェッチするときに更新が必要なUIを更新できるので、私は個人的に[EventBus](https://github.com/greenrobot/EventBus)を使って 'onPostExecute'からカスタムイベントを投稿したいと思います。 – Vucko

答えて

0

、あなたのfragmentであなたのinterfaceを実装AsyncTask constructorを通過し、onPostExecuteでインターフェイスメソッドを呼び出します。

0

まずこの

public interface AsyncInterface { 

      public abstract void companyName(String result); 
} 

のようなインターフェイスを作成し、あなたのフラグメント

上でこれを実装し、onPostExecute(からこのインタフェースのメソッドを呼び出す)、このような。

fragment.companyName(result); 
関連する問題