【问题标题】:Cant find Builder symbol in Stripe AddPaymentMethodActivity for Android SDK在 Android SDK 的 Stripe AddPaymentMethodActivity 中找不到 Builder 符号
【发布时间】:2021-03-28 13:14:55
【问题描述】:

尝试从 Stripe Android SDK 加载条带活动时出现构建错误。

import androidx.appcompat.app.AppCompatActivity;
import com.stripe.android.PaymentSession;
import com.stripe.android.PaymentSessionConfig;
import com.stripe.android.PaymentSessionData;
import com.stripe.android.view.AddPaymentMethodActivityStarter;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Size;
import android.os.Bundle;
import android.content.Intent;

public class HostActivity extends AppCompatActivity {
 private PaymentSession paymentSession;

 @Override
 protected void onCreate(@Nullable Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     paymentSession = new PaymentSession(
         this,
         createPaymentSessionConfig()
     );
     paymentSession.init(createPaymentSessionListener());
 }
 
 private void launchPaymentMethodsActivity() {
     new AddPaymentMethodActivityStarter(this).startForResult(
         AddPaymentMethodActivityStarter.Args.Builder()
         .setShouldAttachToCustomer(true)
         .setShouldRequirePostalCode(true)
         .build()
     );
 }

 @NonNull
 private PaymentSession.PaymentSessionListener createPaymentSessionListener() {
     return new PaymentSession.PaymentSessionListener() {
         @Override
         public void onCommunicatingStateChanged(
             boolean isCommunicating
         ) {
             // update UI, such as hiding or showing a progress bar
         }

         @Override
         public void onError(
             int errorCode,
             @NonNull String errorMessage
         ) {
             // handle error
         }

         @Override
         public void onPaymentSessionDataChanged(
             @NonNull PaymentSessionData data
         ) {
             data.getPaymentMethod();
         }
     };
 }

 @NonNull
 private PaymentSessionConfig createPaymentSessionConfig() {
     return new PaymentSessionConfig.Builder()
             .build();
 }
}

产生的错误是

error: cannot find symbol
                        AddPaymentMethodActivityStarter.Args.Builder()
                                                            ^
symbol:   method Builder()
location: class Args

startForResult 需要“com.stripe.android.view.AddPaymentMethodActivityStarter.Args”作为输入,Stripe 的文档说“可以使用 Args 指定活动并使用 Args.Builder 构建活动。”但是与其他在线示例类似,在引用时似乎找不到 Builder() 构造函数。

我已经初始化了客户会话,我只想打开 Stripe Activity 以添加新的付款方式。启动 AddPaymentMethodActivity 的正确方法是什么?

【问题讨论】:

    标签: android stripe-payments


    【解决方案1】:

    解决方案是缺少“新”关键字。将 launchPaymentMethodsActivity 方法更新为以下解决了该问题。

     private void launchPaymentMethodsActivity() {
         new AddPaymentMethodActivityStarter(this).startForResult(
             new AddPaymentMethodActivityStarter.Args.Builder()
             .setShouldAttachToCustomer(true)
             .setShouldRequirePostalCode(true)
             .build()
         );
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多