我之前在常规应用程序中使用过 PayPal SDK。这是我在正常活动中采取的步骤
a)在活动的 onCreate 我创建一个新线程来初始化 PayPal 库
b)如果初始化顺利,我创建一个 PayPal 按钮并将其添加到我的布局之一中
c)在 PayPal 按钮的 onClick 上,我为用户付款的结果启动了一个新活动
d)在活动的 onActivityResult 我检查付款是否成功并保存信息
到目前为止效果很好,但是当我尝试在片段上使用相同的方法时,事情变得一团糟。我的片段有一个带有 2 个 EditTexts 和一个 LinearLayout 的布局,它将承载 Paypal 按钮
到目前为止,我是这样做的:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
context = (MainActivity) getActivity();
View view = inflater.inflate(R.layout.fragment_layout, container, false);
libraryInitializationThread = new Thread() {
@Override
public void run() {
initLibrary();
// The library is initialized so let's create our CheckoutButton and update the UI.
if (PayPal.getInstance().isLibraryInitialized()) {
hRefresh.sendEmptyMessage(INITIALIZE_SUCCESS);
} else {
hRefresh.sendEmptyMessage(INITIALIZE_FAILURE);
}
}
};
libraryInitializationThread.start();
}
private void initLibrary() {
PayPal pp = PayPal.getInstance();
if (pp == null) {
pp = PayPal.initWithAppID(context, getString(R.string.paypal_sandbox_id), PayPal.ENV_SANDBOX);
pp.setLanguage("en_US"); // Sets the language for the library.
pp.setDynamicAmountCalculationEnabled(false);
}
}
到目前为止,pp = PayPal.initWithAppID
我收到此错误:
java.lang.IllegalStateException: Fragment FragmentPayPal{415f43f8} not attached to Activity
现在我的问题是:
我应该在哪里以及如何初始化贝宝库?
从我的片段中,我可以为结果启动一个活动并捕获 onActivityResult 吗?
谢谢你。