2016-09-19 33 views
0

迄今为止我尝试过的所有方法只返回父母键而不是自动生成的按键。我希望每当我推送数据时从firebase中自动生成密钥

String key = rootref.child("user").push().getKey(); 
newUser.setUid(key); 
Log.i("#####",key); 
Map<String, Object> childUpdates = new HashMap<>(); 
childUpdates.put(key,newUser); 
rootref.updateChildren(childUpdates); 

这里getkey()将返回“用户”给我,而我想自动生成key.Prior这个我一直在使用一个子事件侦听器和listenerforsinglevaluedevent但即使是这些给出了相同的output.Any帮助将尝试不胜感激!

+0

调用'push()。getKey()'将返回一个新的推送ID。如果您在阅读过程中遇到推送ID的问题,请添加读取您的问题的代码。 –

+0

这就是问题......我没有得到新的推送ID ...我得到的是用户的父母ID ...我不明白你的意思,只要我添加安对象与推我想推id生成,并且这就是我的代码 –

+0

我刚刚跑'String key = rootref.child(“user”)。push()。getKey(); System.out.println(key);'并打印'-KS4eeDhFqKcKO3oBy6-'。 –

回答

0

我正在检查你的代码并没有看到setValue。这就是getKey返回“user”的原因。它应该像 rootref.child("user").push().setValue(UserObject)

试试这个! 我使用这段代码。

rootref.push().setValue(UserObject).addOnCompleteListener(new OnCompleteListener<Void>() { 
     @Override 
     public void onComplete(@NonNull Task<Void> task) { 
      if (task.isSuccessful()) { 
       Toast.makeText(getApplicationContext(),rootref.push().getKey(),Toast.LENGT_LONG).show(); 
      } 
     } 
    }); 
相关问题