1

以下で、文字列確認を「支払い確認済み」に設定するための試行を行いました。{} Stringの確認にDescription()を設定したい。この文字列を void onActivityResult から public クラスの EndpointsTask に渡すにはどうすればよいですか?

 @Override
protected  void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
        if (confirm != null) {
            try {
                Log.i("paymentExample", confirm.toJSONObject().toString(4));

                String confirmation = "payment confirmed";







            } catch (JSONException e) {
                Log.e("paymentExample", "an extremely unlikely failure occurred: ", e);
            }
        }
    }
    else if (resultCode == Activity.RESULT_CANCELED) {
        Log.i("paymentExample", "The user canceled.");
    }
    else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) {
        Log.i("paymentExample", "An invalid payment was submitted. Please see the docs.");
    }
}


public class EndpointsTask extends AsyncTask<Context, Integer, Long> {
    protected Long doInBackground(Context... contexts) {

      Contactinfoendpoint.Builder endpointBuilder = new Contactinfoendpoint.Builder(
          AndroidHttp.newCompatibleTransport(),
          new JacksonFactory(),
          new HttpRequestInitializer() {
          public void initialize(HttpRequest httpRequest) { }
          });
  Contactinfoendpoint endpoint = CloudEndpointUtils.updateBuilder(
  endpointBuilder).build();





  try {




      ContactInfo note = new ContactInfo().setDescription(confirmation);
      String noteID = new Date().toString();
      note.setId(noteID);

      EditText streetName;
      streetName = (EditText) findViewById (R.id.streetAddress);
      String streetInfo = streetName.getText().toString();
      note.setStreetAddress(streetInfo);

      EditText firstNameText;
      firstNameText = (EditText) findViewById (R.id.firstName);
      String firstNameInfo = firstNameText.getText().toString();
      note.setNameFirst(firstNameInfo);

      EditText lastNameText;
      lastNameText = (EditText) findViewById (R.id.lastName);
      String lastNameInfo = lastNameText.getText().toString();
      note.setNameLast(lastNameInfo);

      EditText emailText;
      emailText = (EditText) findViewById (R.id.textemail);
      String emailInfo = emailText.getText().toString();
      note.setEmailAddress(emailInfo);

      EditText zipText;
      zipText = (EditText) findViewById (R.id.zipCode);
      String zipInfo = zipText.getText().toString();
      note.setZipCode(zipInfo);

      EditText stateText;
      stateText = (EditText) findViewById (R.id.state);
      String stateInfo = stateText.getText().toString();
      note.setState(stateInfo);

      EditText phoneText;
      phoneText = (EditText) findViewById (R.id.phoneNumber);
      String phoneInfo = phoneText.getText().toString();
      note.setPhone(phoneInfo);





      ContactInfo result = endpoint.insertContactInfo(note).execute();
  } catch (IOException e) {
    e.printStackTrace();
  }
      return (long) 0;
    }
}

EDITED CODE、ボタンを押すたびにデータストア ビューに 2 つのエントリが表示されるのはなぜですか。

   @Override
protected  void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK) {
        PaymentConfirmation confirm = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
        if (confirm != null) {
            try {
                Log.i("paymentExample", confirm.toJSONObject().toString(4));

                String confirmation = "payment confirmed";

                EndpointsTask task = new EndpointsTask(confirmation);
                task.execute(this);



                // TODO: send 'confirm' to your server for verification.
                // see https://developer.paypal.com/webapps/developer/docs/integration/mobile/verify-mobile-payment/
                // for more details.

            } catch (JSONException e) {
                Log.e("paymentExample", "an extremely unlikely failure occurred: ", e);
            }
        }
    }
    else if (resultCode == Activity.RESULT_CANCELED) {
        Log.i("paymentExample", "The user canceled.");
    }
    else if (resultCode == PaymentActivity.RESULT_PAYMENT_INVALID) {
        Log.i("paymentExample", "An invalid payment was submitted. Please see the docs.");
    }
}


public class EndpointsTask extends AsyncTask<Context, Integer, Long> {

    String confirmation;
    public  EndpointsTask(String confirmation ) {
    this.confirmation = confirmation;
    }


    protected Long doInBackground(Context... contexts) {

      Contactinfoendpoint.Builder endpointBuilder = new Contactinfoendpoint.Builder(
          AndroidHttp.newCompatibleTransport(),
          new JacksonFactory(),
          new HttpRequestInitializer() {
          public void initialize(HttpRequest httpRequest) { }
          });
  Contactinfoendpoint endpoint = CloudEndpointUtils.updateBuilder(
  endpointBuilder).build();





  try {




      ContactInfo note = new ContactInfo().setDescription(confirmation);
      String noteID = new Date().toString();
      note.setId(noteID);

      EditText streetName;
      streetName = (EditText) findViewById (R.id.streetAddress);
      String streetInfo = streetName.getText().toString();
      note.setStreetAddress(streetInfo);

      EditText firstNameText;
      firstNameText = (EditText) findViewById (R.id.firstName);
      String firstNameInfo = firstNameText.getText().toString();
      note.setNameFirst(firstNameInfo);

      EditText lastNameText;
      lastNameText = (EditText) findViewById (R.id.lastName);
      String lastNameInfo = lastNameText.getText().toString();
      note.setNameLast(lastNameInfo);

      EditText emailText;
      emailText = (EditText) findViewById (R.id.textemail);
      String emailInfo = emailText.getText().toString();
      note.setEmailAddress(emailInfo);

      EditText zipText;
      zipText = (EditText) findViewById (R.id.zipCode);
      String zipInfo = zipText.getText().toString();
      note.setZipCode(zipInfo);

      EditText stateText;
      stateText = (EditText) findViewById (R.id.state);
      String stateInfo = stateText.getText().toString();
      note.setState(stateInfo);

      EditText phoneText;
      phoneText = (EditText) findViewById (R.id.phoneNumber);
      String phoneInfo = phoneText.getText().toString();
      note.setPhone(phoneInfo);





      ContactInfo result = endpoint.insertContactInfo(note).execute();
  } catch (IOException e) {
    e.printStackTrace();
  }
      return (long) 0;
    }
}

@Override
public void onDestroy() {
    stopService(new Intent(this, PayPalService.class));
    super.onDestroy();
}

}

4

2 に答える 2

1

Context の配列を AsyncTask クラスの doInBackground メソッドに渡す理由がわかりません。文字列を AsyncTask に渡すには、パラメーター化された型でクラスを作成できます

public class EndpointsTask extends AsyncTask<String, Integer, Long>

を使用してタスクを実行できます

new EndpointsTask().execute("any", "amount", "of", "strings);

ここにAsyncTasks のその他のドキュメントがあります

于 2013-08-29T15:37:16.410 に答える