1

あるデータベースにトランザクションを保存し、2 つの別々の Web メソッドを呼び出して別のデータベースの残高を更新する Android アプリケーションがあります。最初の Web メソッドは呼び出されますが、2 番目の Web メソッドは呼び出されません。

AsyncTask コード

  public class Transaction extends AsyncTask<String,Void,Boolean>
    {
        private String finalBalance1 = "", price1 = "", pName = "", pNric = "", pClass = "", sno = "";
        public Transaction(String price1, String pName, String pNric, String pClass, String sno, String finalBalance1)
        {
            super();
            this.finalBalance1 = Double.toString(finalBalance);
            this.price1 = Double.toString(sPrice);
            this.pName = sRA.studentName;
            this.pNric = sRA.studentNric;
            this.pClass = sRA.studentClass;
            this.sno = logger.stallNo;
        }
        @Override
          protected Boolean doInBackground (String...url)
          { 
            boolean good = true;

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://152.226.152.175/NCO/WebService.asmx/InsertStudentTransaction");
            try
            {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
                nameValuePairs.add(new BasicNameValuePair("NRIC", pNric));
                nameValuePairs.add(new BasicNameValuePair("Name", pName));
                nameValuePairs.add(new BasicNameValuePair("Class", pClass));
                nameValuePairs.add(new BasicNameValuePair("StallNo", sno));
                nameValuePairs.add(new BasicNameValuePair("AmountSpent", price1));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                InputStream in = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null)
                {
                    System.out.println(line);
                }

             } catch (ClientProtocolException e) {
                  good = false;
                } catch (IOException e) {
                  good = false;
                }
                return good;
              }

        protected void onPostExecute (Boolean good)
          {
            if(good == true)
            {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://152.226.152.175/NCO/WebService.asmx/UpdateParticulars");
            try
            {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
                nameValuePairs.add(new BasicNameValuePair("NRIC", pNric));
                nameValuePairs.add(new BasicNameValuePair("FixedAmount", finalBalance1));
                nameValuePairs.add(new BasicNameValuePair("Name", pName));
                nameValuePairs.add(new BasicNameValuePair("Class", pClass));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                InputStream in = entity.getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null)
                {
                    System.out.println(line);
                }


             } catch (ClientProtocolException e) {
                  good = false;
             }catch (IOException e) {
                  good = false;
             }
            }
          }
    }
}
4

1 に答える 1

3

ここでは Thread の代わりに AsyncTask を使用する必要があります. 2 つの別々の AsyncTask を使用すると, 最初のタスクの onPostExecute() メソッドで 2 番目のタスクを呼び出すことができます.

Pls はこれを確認してください: http://developer.android.com/reference/android/os/AsyncTask.html

于 2013-07-31T05:31:41.587 に答える