0
我正在使用Firebase登錄並將數據存儲到其實時數據庫的應用程序的Android Studio中工作。 我使用默認的Firebase數據庫規則,因此只有經過身份驗證的用戶可以在數據庫中寫入/讀取。使用同一個uid將多個數據保存到Firebase數據庫
我有一個活動(AddMarker),它將兩個editText值和一個LatLong值(來自另一個活動的這個值)保存到數據庫。 的代碼實際上是工作,我可以通過這種方式查看存儲在它的數據: DB structure
的問題是,每次我保存(在AddMarker活動),連接到該ID之前的數據,得到由新的替換一。
相反,我想在DB多個值來存儲具有相同id像這樣的例子: DB structure 2
這是我的代碼
public class AddMarker extends AppCompatActivity implements View.OnClickListener {
//Save flag
public static boolean isSaved;
//Database
private DatabaseReference databaseReference;
FirebaseAuth firebaseAuth;
private FirebaseAuth mAuth;
//UI
private EditText tipo, marca;
private Button saveMarker;
public LatLng ll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_marker);
//DB
mAuth = FirebaseAuth.getInstance();
databaseReference = FirebaseDatabase.getInstance().getReference();
//Initialize views
tipo = (EditText) findViewById(R.id.type);
marca = (EditText) findViewById(R.id.specInfo);
saveMarker = (Button) findViewById(R.id.save_btn);
//Initialize isSaved
isSaved = false;
//Set button listener
saveMarker.setOnClickListener(this);
//get Position
ll = getIntent().getParcelableExtra("POSITION");
}
private MarkerOptions saveMarkerInfo(){
String tipo_str = tipo.getText().toString().trim();
String marca_str = marca.getText().toString().trim();
LatLng pos = ll;
MarkerInfo markerInfo = new MarkerInfo(tipo_str,marca_str, pos);
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
MarkerOptions marker = new MarkerOptions()
.position(ll)
.anchor(0.0f, 1.0f)
.title("prova")
//Add data to DB
databaseReference.child(user.getUid()).setValue(markerInfo);
Toast.makeText(this,"infos saved",Toast.LENGTH_LONG).show();
finish();
return marker;
}
@Override
public void onClick(View v) {
if(v == saveMarker){
isSaved = true;
MarkerOptions mo=saveMarkerInfo();
MainActivity.mMap.addMarker(mo);
}
}
}
謝謝singleUserId下的孩子的!我通過使用Push uid解決了我的問題,但您的解決方案將在未來幫助我最終實現其他項目。 – Reyd