当我单击Android Studio应用程序时,谁能教我如何更新Firebase值?无需检索和显示数据.我的Firebase只是价值的增量.例如,Firebase计数器值现在为0,单击按钮时如何在Firebase中增加计数器值?我尝试使用下面的代码,但无法正常工作.
import com.firebase.clIEnt.Firebase;public class Voting extends AppCompatActivity {private button msendData;int counter; private Firebase mRef; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_voting); Firebase.setAndroIDContext(this); mRef = new Firebase("https://lollol.firebaseio.com/"); msendData = (button) findVIEwByID(R.ID.Votethis); msendData.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { Firebase mRefChild = mRef.child("Booth A"); mRefChild.setValue(counter++); }
解决方法:
为了增加Firebase数据库中的值,首先,您需要检索该值.在不知道的情况下无法增加值.为此,我绝对建议您使用Firebase Transaction.
让我们举个例子.假设我们要增加一个计数器.为此,请使用以下代码设置计数器的默认值.
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();rootRef.child("score").setValue(1);
假设分数字段的类型为Integer,要使用交易,请使用以下方法:
public static voID setscore(String operation) { DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference scoreRef = rootRef.child("score"); scoreRef.runTransaction(new Transaction.Handler() { @OverrIDe public Transaction.Result doTransaction(MutableData mutableData) { Integer score = mutableData.getValue(Integer.class); if (score == null) { return Transaction.success(mutableData); } if (operation.equals("increasescore")) { mutableData.setValue(score + 1); } else if (operation.equals("decreasescore")){ mutableData.setValue(score - 1); } return Transaction.success(mutableData); } @OverrIDe public voID onComplete(DatabaseError databaseError, boolean b, DataSnapshot dataSnapshot) {} });}
使用事务,如果用户试图同时增加/减少分数,您将避免结果不一致.因此,作为结论,请根据您的增加/减少 *** 作调用此方法.
如果您想阅读分数,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference scoreRef = rootRef.child("score");ValueEventListener eventListener = new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot dataSnapshot) { Integer score = dataSnapshot.getValue(Integer.class); Log.d("TAG", "score: " + score); } @OverrIDe public voID onCancelled(DatabaseError databaseError) {}};scoreRef.addListenerForSingleValueEvent(eventListener);
总结 以上是内存溢出为你收集整理的Firebase中的Android Studio价值增加全部内容,希望文章能够帮你解决Firebase中的Android Studio价值增加所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)