protected override void OnActivityResult (int requestCode, Android.App.Result resultCode, Android.Content.Intent data)
 {
     switch (requestCode) {
     case REQUEST_CODE_CHANGE_MASKED_WALLET:
         if (resultCode == Android.App.Result.Ok &&
             data.HasExtra (WalletConstants.ExtraMaskedWallet)) {
             mMaskedWallet = data.GetParcelableExtra (WalletConstants.ExtraMaskedWallet).JavaCast<MaskedWallet> ();
             ((FullWalletConfirmationButtonFragment) ResultTargetFragment)
                 .UpdateMaskedWallet (mMaskedWallet);
         }
         // you may also want to use the new masked wallet data here, say to recalculate
         // shipping or taxes if shipping address changed
         break;
     case WalletConstants.ResultError:
         int errorCode = data.GetIntExtra (WalletConstants.ExtraErrorCode, 0);
         HandleError (errorCode);
         break;
     default:
         base.OnActivityResult (requestCode, resultCode, data);
         break;
     }
 }
        public override void OnActivityResult (int requestCode, int resultCode, Android.Content.Intent data)
        {            
            mProgressDialog.Hide ();

            // retrieve the error code, if available
            int errorCode = -1;
            if (data != null)
                errorCode = data.GetIntExtra (WalletConstants.ExtraErrorCode, -1);

            switch (requestCode) {
            case REQUEST_CODE_RESOLVE_ERR:
                if (resultCode == (int)Result.Ok) {
                    mGoogleApiClient.Connect();
                } else {
                    handleUnrecoverableGoogleWalletError(errorCode);
                }
                break;
            case REQUEST_CODE_RESOLVE_LOAD_FULL_WALLET:
                switch (resultCode) {
                case (int)Result.Ok:
                    if (data.HasExtra(WalletConstants.ExtraFullWallet)) {
                        FullWallet fullWallet =
                            data.GetParcelableExtra (WalletConstants.ExtraFullWallet).JavaCast<FullWallet> ();
                        // the full wallet can now be used to process the customer's payment
                        // send the wallet info up to server to process, and to get the result
                        // for sending a transaction status
                        fetchTransactionStatus(fullWallet);
                    } else if (data.HasExtra(WalletConstants.ExtraMaskedWallet)) {
                        // re-launch the activity with new masked wallet information
                        mMaskedWallet = data.GetParcelableExtra (WalletConstants.ExtraMaskedWallet).JavaCast<MaskedWallet> ();
                        mActivityLaunchIntent.PutExtra (Constants.EXTRA_MASKED_WALLET, mMaskedWallet);

                        StartActivity(mActivityLaunchIntent);
                    }
                    break;
                case (int)Result.Canceled:
                    // nothing to do here
                    break;
                default:
                    handleError(errorCode);
                    break;
                }
                break;
            }
        }
    /**
 * If the confirmation page encounters an error it can't handle, it will send the customer back
 * to this page.  The intent should include the error code as an {@code int} in the field
 * {@link WalletConstants#EXTRA_ERROR_CODE}.
 */
    protected override void OnNewIntent (Android.Content.Intent intent)
    {            
        if (intent.HasExtra (WalletConstants.ExtraErrorCode)) {
            int errorCode = intent.GetIntExtra (WalletConstants.ExtraErrorCode, 0);
            HandleError(errorCode);
        }
    }