以前、通常のアプリでPayPalSDKを使用していました。これが私が通常の活動で取るステップです
a)アクティビティのonCreateで、PayPalライブラリを初期化するための新しいスレッドを作成します
b) initがうまくいけば、PayPalボタンを作成し、レイアウトの1つに追加します
c) PayPalボタンのonClickで、ユーザーが支払いを行う結果の新しいアクティビティを開始します
d)アクティビティのonActivityResultで支払いが正常に行われたかどうかを確認し、情報を保存します
これはこれまでのところうまく機能しましたが、フラグメントに対して同じアプローチを使用しようとすると、状況が乱雑になります。私のフラグメントには、2つのEditTextとPaypalボタンをホストするLinearLayoutのレイアウトがあります
これまでのところ、私はこのようにしました:
@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をキャッチできますか?
ありがとうございました。