我試圖弄清楚如何正確使用 Firebase,所以我制作了這個簡單的代碼,用代碼和密碼保存了一個“游戲”物件。我還讓它在螢屏上顯示游戲的鍵。運行代碼,它可以作業并在螢屏上顯示看起來像一個鍵的東西,但是我在 Firebase 控制臺的任何地方都找不到任何資料。這是代碼:
public class testthing extends AppCompatActivity implements View.OnClickListener {
EditText pass;
TextView showkey;
EditText code;
Button create;
String codestr;
String passstr;
FirebaseDatabase firebaseDatabase;
DatabaseReference gameRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testthing);
pass = findViewById(R.id.pass);
code = findViewById(R.id.code);
create = findViewById(R.id.create);
showkey = findViewById(R.id.showthingy);
firebaseDatabase = FirebaseDatabase.getInstance();
create.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if(view==create){
codestr=code.getText().toString();
passstr=pass.getText().toString();
Game g = new Game(codestr,passstr,"");
gameRef = firebaseDatabase.getReference("gameRooms").push();
g.key = gameRef.getKey();
gameRef.setValue(g);
showkey.setText(g.key);
}
}
}
“游戲”類是:
@IgnoreExtraProperties
public class Game {
public String key;
public String code;
public String password;
public Game(){
}
public Game(String code, String password,String key){
this.code = code;
this.password = password;
this.key = key;
}
}
uj5u.com熱心網友回復:
當您使用以下代碼行時:
gameRef.setValue(g);
您嘗試寫入資料庫的資料可能成功或失敗,但您永遠不會知道這一點,因為您沒有附加偵聽器來檢查它。所以解決這個問題,你必須像下面的代碼行一樣附加一個監聽器:
gameRef.setValue(g).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d("TAG", "The operation is complete.");
showkey.setText(g.key);
} else {
Log.d("TAG", task.getException().getMessage());
}
}
});
如果操作失敗,很可能是 Firebase 服務器拒絕了您的操作。因此,請確保您有適當的規則。否則,將鍵設定為 TextView。請記住,所有 Firebase API 都是異步的。這包括寫入和讀取操作。如果您以后需要讀取資料,我建議您查看以下文章:
- 如何使用 get() 從 Firebase 實時資料庫中讀取資料?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/481050.html
標籤:爪哇 安卓 火力基地 谷歌云平台 firebase-实时数据库
下一篇:在另一個頁面中顯示條目值
