android-从异步任务接收数据后,编辑选项菜单

android-从异步任务接收数据后,编辑选项菜单,第1张

概述我正在我的应用程序中实现应用内结算服务.我在onCreate()中设置了对IabHelper.queryInventoryAsync()的调用以检索以前的购买.如果购买了该物品,则将全局布尔变量设置为true.同时,在onCreateOptionsMenu()中,我检查该变量是否删除MenuItem.我的问题是,按预期有时会在异步任务完成设

我正在我的应用程序中实现应用内结算服务.我在onCreate()中设置了对IabHelper.queryInventoryAsync()的调用以检索以前的购买.如果购买了该物品,则将全局布尔变量设置为true.同时,在onCreateOptionsMenu()中,我检查该变量是否删除MenuItem.我的问题是,按预期有时会在异步任务完成设置我的布尔变量之前调用onCreateOptionsMenu().我需要一个解决方案来告诉onCreateOptionsMenu()等待该任务设置布尔值,以便它可以相应地创建菜单.这是详细的代码:

@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {  //other  stuff...   helper.queryInventoryAsync(new IabHelper.queryInventoryFinishedListener() {                public voID onqueryInventoryFinished(IabResult result,                                                     Inventory inventory) {                    if (result.isFailure()) {                        // handle error here                           return;                                            }                    if (inventory.hasPurchase(REMOVE_ADS_SKU)) {                          //item purchased. set control variable                        isNoAds = true;                    }                 }            });}@OverrIDepublic boolean onCreateOptionsMenu(final Menu menu) {    getMenuInflater().inflate(R.menu.main, menu);    //if the control variable is true, remove the option to buy ad-free version    if (isNoAds) menu.removeItem(R.ID.action_remove_ads);    return super.onCreateOptionsMenu(menu);}

解决方法:

我发现最有效的方法是使整个菜单无效.因此,当您获得异步结果(在onqueryInventoryFinished中)时,只需调用:

invalIDateOptionsMenu();

或者,如果您正在使用FragmentActivity(SherlockFragmentActivity或ActionBaractivity)

supportInvalIDateOptionsMenu();

这样,将重新创建菜单,您可以根据需要安全地添加或删除项目.

总结

以上是内存溢出为你收集整理的android-从异步任务接收数据后,编辑选项菜单全部内容,希望文章能够帮你解决android-从异步任务接收数据后,编辑选项菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存