小编Ere*_*eza的帖子

Android In-App Billing v3:"无法执行操作:queryInventory"

我首次使用新的v3 API设置了In-App Billing.它在我的设备上正常工作,但我收到了很多其他用户的错误报告.

其中之一是:

java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
    at my.package.util.iab.IabHelper.checkSetupDone(IabHelper.java:673)
    at my.package.util.iab.IabHelper.queryInventory(IabHelper.java:462)
    at my.package.util.iab.IabHelper$2.run(IabHelper.java:521)
    at java.lang.Thread.run(Thread.java:1019)
Run Code Online (Sandbox Code Playgroud)

另一个是:

java.lang.NullPointerException
    at my.package.activities.MainActivity$4.onIabSetupFinished(MainActivity.java:159)
    at my.package.util.iab.IabHelper$1.onServiceConnected(IabHelper.java:242)
Run Code Online (Sandbox Code Playgroud)

我的活动实现遵循Google的示例代码(所有引用的类都不受示例影响):

IabHelper mHelper;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //...

    mHelper = new IabHelper(this, IAB_PUBLIC_KEY);
    mHelper.enableDebugLogging(true);

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            if (!result.isSuccess()) {
                // Oh noes, there was a problem.
                return;
            }

            // Hooray, IAB is fully set up. Now, let's get an inventory of
            // stuff …
Run Code Online (Sandbox Code Playgroud)

android in-app-billing

29
推荐指数
4
解决办法
2万
查看次数

设置FLAG_ACTIVITY_CLEAR_TASK时如何避免startActivity上出现黑屏?

我正在使用以下内容启动一项新活动:

Intent intent = new Intent(this, MyNewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
overridePendingTransition(0, 0);
Run Code Online (Sandbox Code Playgroud)

MyNewActivity启动时,会显示黑屏.

如果我删除Intent.FLAG_ACTIVITY_CLEAR_TASK,活动将在任何时刻启动而不显示黑屏(而是在新加载时显示上一个活动).

有没有办法避免这个黑屏?删除标志似乎不是一个选项(我需要清除所有当前任务的堆栈并启动一个新的活动作为根目录).

编辑:我附上一个非常简单的代码,重现问题(设置一个黑暗的主题,如Theme.AppCompat应用程序).黑屏显示的时间非常短(取决于启动时接收活动的工作量),但您可以看到它.如果您不使用FLAG_ACTIVITY_CLEAR_TASK,则不会显示黑屏并且过渡平滑:

主要活动

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, MyNewActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                overridePendingTransition(0,0);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

MyNewActivity

public class MyNewActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new); …
Run Code Online (Sandbox Code Playgroud)

flags android android-intent android-activity

10
推荐指数
1
解决办法
1万
查看次数