2

以前、通常のアプリで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をキャッチできますか?

ありがとうございました。

4

1 に答える 1

1

実際、私が最後に使用したアプローチは、単純に、私のメインのホスティングアクティビティで、フラグメントを追加する前にペイパルライブラリを初期化することでした。このように、それはうまく機能します。

于 2012-11-04T13:46:20.340 に答える