Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Firebase实时数据库未更新?_Java_Android_Firebase Realtime Database - Fatal编程技术网

Java 为什么Firebase实时数据库未更新?

Java 为什么Firebase实时数据库未更新?,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我已经创建了一个列表。当我尝试更新这些值时,这些值在Edittext中被正确捕获。但是,当我在更正后单击“更新”按钮时,它不起作用并强制关闭应用程序 我的更新代码如下 public class UpdateActivity extends AppCompatActivity { private EditText PName, PLocation; private FirebaseDatabase mDatabase; private DatabaseReference mDbRef; priv

我已经创建了一个列表。当我尝试更新这些值时,这些值在Edittext中被正确捕获。但是,当我在更正后单击“更新”按钮时,它不起作用并强制关闭应用程序

我的更新代码如下

public class UpdateActivity extends AppCompatActivity {

private EditText PName, PLocation;
private FirebaseDatabase mDatabase;
private DatabaseReference mDbRef;
private Button upbtn;

private String prID;
private String pname,plocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_update);

    prID = getIntent().getStringExtra("ProjID");
    pname = getIntent().getStringExtra("pname");
    plocation = getIntent().getStringExtra("plocation");

    PName = findViewById(R.id.uProjName);
    PName.setText(pname);
    PLocation = findViewById(R.id.uProjLocation);
    PLocation.setText(plocation);
    PType = findViewById(R.id.uProjType);

    upbtn = findViewById(R.id.ubutton);
   mDbRef = mDatabase.getInstance().getReference().child("Projects");

   upbtn.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           DatabaseReference updateProject = mDbRef.child(prID);
           updateProject.child("pname").setValue(PName);
           updateProject.child("plocation").setValue(PLocation);
           Toast.makeText(UpdateActivity.this, "Project updated Successfully",Toast.LENGTH_LONG).show();
   finish();
       }
   });
}
}

我是一个学习者。请帮助我我的代码哪里出错了

看看这个例子。该过程是异步的,因此您必须添加侦听器来确定数据库是否已更新

mDatabase.child("achildName").child("anotherChildName").setValue(YOUR_DATA)
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // Write was successful!
                // ...
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Write failed
                // ...
            }
        });
mDatabase.child(“achildName”).child(“anotherChildName”).setValue(您的_数据)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公开作废(作废避免){
//写得很成功!
// ...
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//写入失败
// ...
}
});
除此之外,首先,确保在Manifest.xml中添加了Internet权限 然后在Firebase控制台中检查实时数据库并检查安全规则


要更新实时数据库

您是否尝试在
setValue()
操作上附加侦听器,以查看是否是错误消息?如何执行和检查?我不是专业的程序员。。。只是一个学习者.updateProject.child(“plocation”).setValue(plocation).addOnCompleteListener(/*…*/);你有什么收获吗;很可能正在关闭应用程序,您是否检查了firebase实时规则?No finish()仅关闭当前活动并返回到上一个活动。已尝试。不起作用。我传递了成功和失败的祝酒词。但当我按下更新按钮时,这两条消息都没有出现。请更正所需的代码。项目设置正确吗?首先,清单中的Internet权限,您是否启用了实时数据库及其安全规则?是的,我在实时数据库中的添加活动工作正常。但更新只是有问题。