本文介绍了如何在Java for Android中修改新创建的监听器中的外部布尔值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!,我有一个Android片段类,它有一个在单击按钮后在外部Firebase数据库上写入内容的方法。,但是,我不知何故无法访问我在OnCompleteListener的onClick方法中定义的布尔变量writingSuccessfull
和writingNotSuccessfull
。在显示的代码中,我得到了一个错误&变量‘WritingSuccessFull’是从内部类内部访问的,需要是最终的或有效的最终的,当我让Android Studio解决此问题时,代码如下所示:,现在我可以执行代码了,但是布尔值不会更改,即使执行了侦听器中的代码。我也尝试了一下,在布尔变量前没有加上&最终&。但这并没有改变任何事情。我不能修改此监听程序中的布尔变量。但这是我需要做的事情,因为我想知道数据是否已成功写入数据库。,知道我为什么会遇到这个问题吗?如何解决它?我将感谢您的每条评论。,更新:以下是更新后的代码,其中包含Volatile和AericBoolas:,问题在于onComplete方法的异步调用。更改布尔值的代码不会立即调用,因为它是在异步调用的onComplete方法中调用的。这意味着在我的示例中,onComplete方法中的代码是在10次While循环迭代之后调用的,而不是在循环期间调用的。现在最大的问题是如何在While循环期间调用onComplete方法中的任何代码。,更新:以下是运行代码时来自logcat的(相关)输出:,结果是该项在FireBase数据库中保存了10次。我想要的是尝试在Firebase数据库中存储该项目一次。如果这是成功的,循环应该停止,并且应该有一个祝酒词告诉它是成功的。如果不成功,则循环应尝试10次(延迟1秒)。如果尝试10次后仍无法将该项目存储在FireBase数据库中,则应停止循环,并且应显示一条吐司消息,告知无法存储该项目。,创建扩展Android视图模型的自定义类,然后在片段中使用此自定义视图模型类来观察值的更改,这是MVVM体系结构的一个简单片段。希望它现在起作用了。谢谢。,这篇关于如何在Java for Android中修改新创建的监听器中的外部布尔值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,