我正在重新设计我的应用程序,在我的新应用程序流程中,调用 Google Play 商店审核的最佳位置是在片段中。在我能够在活动中毫无问题地启动审查代码之前。然而,现在我已经将代码复制到一个片段中,我有两个症结点,我不知道如何解决。
所以,代码就像这样(有2种方法):
private void activateReviewInfo() {
manager = ReviewManagerFactory.create(FormerActivity.this);
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if(task.isSuccessful()) {
reviewInfo = task.getResult();
}
});
}
private void startReviewFlow() {
if(reviewInfo != null) {
Task<Void> flow = manager.launchReviewFlow(FormerActivity.this, reviewInfo);
flow.addOnCompleteListener(task -> {
});
} else {
// not creating a review because the object is null
}
}
问题是:
manager = ReviewManagerFactory.create(FormerActivity.this);
&&
Task<Void> flow = manager.launchReviewFlow(FormerActivity.this, reviewInfo);
我尝试了所有类型的组合来将 Activity 名称替换为 Fragment 名称(例如 NewFragment.this、this、NewFragment 等)。我知道我的理解中缺少一些基本知识。我希望这些方法能够以某种方式接受片段而不仅仅是一个活动。任何帮助将不胜感激,谢谢。
您需要在ReviewManagerFactory.create()的参数中传递当前Activity
要获取片段内的当前活动,您只需使用 getActivity() 它将返回片段当前正在运行的父活动。
在你的情况下应该是这样的
manager = ReviewManagerFactory.create(getActivity());
&&
Task<Void> flow = manager.launchReviewFlow(getActivity(), reviewInfo);