如何使用' refKey'更新Firebase节点。在这里,我有来自' EditText'的五个字符串。我需要更新名为“感谢”的节点。使用其“重新生成密钥”#。我得到了#refKey'作为一个'字符串'参数名为' key'。以下是代码。
MainActivity.java
private void updateAppreciatedSomeone(final EditText subject, final EditText first, final EditText second, final EditText third,
final EditText date1, final String key){
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
final DatabaseReference reference = firebaseDatabase.getReference();
Query query = reference.child("appreciate").equalTo(key);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DataSnapshot nodeDataSnapshot = dataSnapshot.getChildren().iterator().next();
String key1 = nodeDataSnapshot.getKey(); //
String path = "/" + dataSnapshot.getKey() + "/" + key1;
HashMap<String, Object> result = new HashMap<>();
// to update appreciate nodeDataSnapshot
result.put("appreciatedWhom", first.getText().toString());
result.put("appreciatedWhy",second.getText().toString());
result.put("appreciatedDateTime", date.getText().toString();
result.put("appreciatedDescription",third.getText().toString());
result.put("appreciatedSubject", subject.getText().toString());
reference.child(path).updateChildren(result);
Log.d("UPDATE_APPRECIATION", "APPRECIATION_UPDATED_FOR:" + result);
Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("UPDATE_PROFILE", ">>> Error:" + "find onCancelled:" + databaseError);
}
});
}
我在发生异常后运行此代码。
java.util.NoSuchElementException
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:59)
at com.google.firebase.database.zzb.next(Unknown Source)
at com.threeiteam.karma.MainActivity$41.onDataChange(MainActivity.java:1357)
at com.google.firebase.database.zzp.onDataChange(Unknown Source)
at com.google.android.gms.internal.zzegf.zza(Unknown Source)
at com.google.android.gms.internal.zzeia.zzbyc(Unknown Source)
at com.google.android.gms.internal.zzeig.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
at dalvik.system.NativeStart.main(Native Method)
但是这段代码正在用于更新用户节点&#39;使用以下代码。
Query query = reference.child("user").orderByChild("email").equalTo(FirebaseAuth.getInstance().getCurrentUser().getEmail());