我正在尝试在应用中实施Android付费 Android付费按钮必须位于由MainActivity替换的Fragment上。
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)位于Fragment视图
中按照这些说明(https://developers.google.com/android-pay/android/tutorial#obtain_credentials_and_a_client_id_for_your_app),我必须通过上面指示的REQUEST_CODE_MASKED_WALLET在onActivityResult上的Activity on activity中获取maskedWallet。
但是我通过奇怪的代码(328180和262644)得到了所需的数据,而不是我的REQUEST_CODE_MASKED_WALLET
为什么会这样?有人可以帮帮我吗?
答案 0 :(得分:1)
我认为这是因为您需要使用super.onActivityResult(...)
Activity
方法拨打onActivityResult
。
查看您获得的数字以及它们在二进制文件中的外观:
328180
- > 1010000000111110100
262644
- > 1000000000111110100
基本上发生的情况是,当SupportWalletFragment
需要显示UI时,它会触发内部requestCode为500的Intent
(注意:不依赖于此数字是相同的未来发布)。二进制500是111110100
,这是你看到的数字的通用后缀。
支持库将活动结果定向到片段的方式是使用片段ID作为请求代码高位的掩码。这就是您在所看到的两个请求代码的开头看到101
或100
的原因。然后,当您致电super.onActivityResult()
时,支持库会提取片段ID并适当地指示结果。
如果添加此行代码,您应该会看到所需的结果。