Android应用内评论弹窗导致应用崩溃

3

尝试为Android实现应用内评论功能时,我在运行测试FakeReviewManager时没有任何问题,但是当我将其更换为真正的管理器时,窗口弹出时会崩溃。下面是我的代码:

ReviewManager manager;
ReviewInfo reviewInfo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //manager = new FakeReviewManager(context);
    manager = ReviewManagerFactory.create(this);
    Task<ReviewInfo> request = manager.requestReviewFlow();
    request.addOnCompleteListener(task -> {
        if (task.isSuccessful()) {
            Log.d("myTag","Review can be requested");
            ReviewInfo reviewInfo = task.getResult();
        } else {
            // There was some problem, continue regardless of the result.
        }
    });
}

public void ProgressManagement() {

     Task<Void> flow = manager.launchReviewFlow(MainActivity.this, reviewInfo);
     flow.addOnCompleteListener(task -> {
     Log.d("myTag","Review process completed");
     });
}

我得到的错误代码是:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android, PID: 16579
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.PendingIntent com.google.android.play.core.review.ReviewInfo.a()' on a null object reference
    at com.google.android.play.core.review.c.launchReviewFlow(Unknown Source:7)
    at com.android.MainActivity.ProgressManagement(MainActivity.java:280)
    at com.android.MainActivity$4.onClick(MainActivity.java:209)
    at android.view.View.performClick(View.java:6897)
    at android.view.View$PerformClick.run(View.java:26104)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

顺便问一下,你在哪里启动ProgressManagement()方法? - toto_tata
我遇到了同样的问题,有解决方案吗? - Vo Thanh Tung
2个回答

0

看起来你没有初始化ui。缺少setContentView()。


0
尝试这个:
添加以下内容
private ReviewInfo reviewInfo;

以下

ReviewManager manager;

然后改成这样:

if (task.isSuccessful()) {
        Log.d("myTag","Review can be requested");
        ReviewInfo reviewInfo = task.getResult();
    }

转换为:

if (task.isSuccessful()) {
        Log.d("myTag","Review can be requested");
        reviewInfo = task.getResult();
    }

4
不理解这种方法的想法。在这种情况下,在内部或外部定义变量没有区别。 - hidd
@VoThanhTung,你是否遇到了同样的问题? - afhamu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接