2016-04-06 1 views
0

アプリでAndroid支払いを実装しようとしています。
Androidの支払いボタンは、MainActivityから置き換えられたFragmentにある必要があります。FragmentビューのSupportWalletFragmentを置き換えます。idが間違ったリクエストコードを返します。

WalletFragmentInitParams.Builder startParamsBuilder = WalletFragmentInitParams.newBuilder() 
      .setMaskedWalletRequest(maskedWalletRequest) 
      .setMaskedWalletRequestCode(REQUEST_CODE_MASKED_WALLET) 
      .setAccountName(accountName); 
    mWalletFragment.initialize(startParamsBuilder.build()); 

    MainActivity mainActivity = getMainActivity(); 
    mainActivity.getSupportFragmentManager().beginTransaction() 
      .replace(R.id.conteiner_AP, mWalletFragment) 
      .commit(); 

このID容器(R.id.conteiner_AP)は、私があったREQUEST_CODE_MASKED_WALLETによってonActivityResult方法に活性のmaskedWalletを取得する必要があり、これらの命令(https://developers.google.com/android-pay/android/tutorial#obtain_credentials_and_a_client_id_for_your_app)に続いてフラグメント図

に位置しています上記の通りです。

しかし、私は奇妙なコード(328180と262644)によって、必要なデータを取得し、ない私のREQUEST_CODE_MASKED_WALLET

は、なぜそれが起こるのでしょうか?誰かが私を助けることができますか?

+0

REQUEST_CODE_MASKED_WALLETの値は何ですか? –

+0

元々は1001でした。その後、値が0より大きいことが判明しました。いずれの場合も、データは328180および262644コードで返されます。私の問題は、私はこれらが他のコードの下に来ないことを確信できません。 –

+0

これは不愉快に思えるかもしれませんが、リクエストコード<= 255、おそらく '1'を試してみるとどうなりますか?まだそれは歪んで戻って来るのですか? –

答えて

1

ActivityonActivityResultメソッドでsuper.onActivityResult(...)に電話する必要があると考えています。数字で

ルックあなたが取得していると、彼らはバイナリでどのように見えるか:

328180 - >1010000000111110100

262644 - >1000000000111110100

SupportWalletFragmentニーズがUIを表示するとき、基本的に何が起こりますか内部リクエストコードが500のIntentを起動します(注:ではなく、はこの番号が将来のリリースで同じになる)。 500バイナリで表示されている数値の一般的な接尾辞は111110100です。

サポートライブラリがアクティビティ結果をフラグメントに送る方法は、フラグメントIDをリクエストコードの上位ビットのマスクとして使用することです。そのため、表示されている2つの要求コードの先頭に101または100のいずれかが表示されます。 super.onActivityResult()に電話すると、サポートライブラリはフラグメントIDを抽出し、結果を適切に指示します。

このコード行を追加すると、必要な結果が表示されます。

+1

ああ....ありがとう...それは本当に助けた。アクティビティのonActivityResultは2回呼び出されます.1回は古いコードで、2回目は私が尋ねたことです。これははるかに良いです。 –

関連する問題