Java 如何编辑特定子项';安卓工作室Firebase的价值是多少?

Java 如何编辑特定子项';安卓工作室Firebase的价值是多少?,java,android,firebase,Java,Android,Firebase,你能帮我找出我的代码不起作用的原因吗?我想在Firebase中检索子rate的值,并将其显示在Android Studio中的我的EditText上。然后,当通过按钮在编辑文本中输入另一个值时,子速率的值将被更新。谢谢 package com.example.jordan.grat; import ... public class AdminActivity extends AppCompatActivity { private Button mLogout, mAddDriver, mE

你能帮我找出我的代码不起作用的原因吗?我想在Firebase中检索子
rate
的值,并将其显示在Android Studio中的我的
EditText
上。然后,当通过
按钮
编辑文本
中输入另一个值时,子
速率
的值将被更新。谢谢

package com.example.jordan.grat;

import ...

public class AdminActivity extends AppCompatActivity {

private Button mLogout, mAddDriver, mEditDriver, mUpdateRate;

private DatabaseReference mAdminDatabase;

private EditText mRateField;

private String mRate, mPassword;

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

    mLogout = (Button) findViewById(R.id.logout);
    mAddDriver = (Button) findViewById(R.id.addDriver);
    mEditDriver = (Button) findViewById(R.id.editDriver);
    mUpdateRate = (Button) findViewById(R.id.updateRate);

    mRateField = (EditText) findViewById(R.id.rateField);

    mAdminDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child("Admins");

    getRate();

    mAddDriver.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(AdminActivity.this, AddDriverActivity.class);
            startActivity(intent);
            finish();
            return;
        }
    });

    mEditDriver.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        }
    });

    mLogout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(AdminActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
            return;
        }
    });

    mUpdateRate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setRate();
        }
    });
}

private void getRate() {
    mAdminDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists() && dataSnapshot.getChildrenCount()>0){
                Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
                if (map.get("rate")!=null){
                    mRate = map.get("rate").toString();
                    mRateField.setText(mRate);
                }
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
}

private void setRate() {
    mRateField.getText().toString();
    mAdminDatabase.child("rate").setValue(mRateField);
}

}
package com.example.jordan.grat;
进口
公共类AdminActivity扩展了AppCompatActivity{
专用按钮mLogout、MADDRIVER、mEditDriver、mUpdateRate;
私人数据库参考数据库;
私人编辑部;
私有字符串mRate,mPassword;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_admin);
mLogout=(按钮)findViewById(R.id.logout);
maddriver=(按钮)findviewbyd(R.id.addDriver);
mEditDriver=(按钮)findViewById(R.id.editDriver);
mUpdateRate=(按钮)findviewbyd(R.id.updateRate);
mRateField=(EditText)findViewById(R.id.rateField);
mAdminDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”).child(“管理员”);
getRate();
maddriver.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(AdminActivity.this、AddDriveActivity.class);
星触觉(意向);
完成();
回来
}
});
mEditDriver.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
}
});
mLogout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(AdminActivity.this、MainActivity.class);
星触觉(意向);
完成();
回来
}
});
mUpdateRate.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
setRate();
}
});
}
私人空置率(){
mAdminDatabase.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.exists()&&dataSnapshot.getChildrenCount()>0){
Map Map=(Map)dataSnapshot.getValue();
if(map.get(“rate”)!=null){
mRate=map.get(“rate”).toString();
mRateField.setText(mRate);
}
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
私有无效设置率(){
mRateField.getText().toString();
mAdminDatabase.child(“rate”).setValue(mRateField);
}
}
对不起,我还是Android Studio的初学者。任何帮助都将不胜感激。我的火力基地:


查看您的Firebase规则。我看到你要求“公开限制”,这样你就可以打开规则并将读写设置为真

像这样:

{
“规则”:{
“.read”:正确,
“.write”:正确
}
}
它正在工作,请尝试以下操作:

private Button mLogout, mAddDriver, mEditDriver, mUpdateRate;

    private DatabaseReference mAdminDatabase;

    private EditText mRateField;

    private String mRate, mPassword;

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


        mUpdateRate = (Button) findViewById(R.id.save);

        mRateField = (EditText) findViewById(R.id.editText);

        mAdminDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child("Admins");

        getRate();

        mUpdateRate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setRate();
            }
        });
    }

    private void getRate() {
        mAdminDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists() && dataSnapshot.getChildrenCount()>0){
                    Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
                    if (map.get("rate")!=null){
                        mRate = map.get("rate").toString();
                        mRateField.setText(mRate);
                    }
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }

    private void setRate() {
        mRate =   mRateField.getText().toString();
        mAdminDatabase.child("rate").setValue(mRate);
    }
专用按钮mLogout、maddriver、mEditDriver、mUpdateRate;
私人数据库参考数据库;
私人编辑部;
私有字符串mRate,mPassword;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUpdateRate=(按钮)findviewbyd(R.id.save);
mRateField=(EditText)findViewById(R.id.EditText);
mAdminDatabase=FirebaseDatabase.getInstance().getReference().child(“用户”).child(“管理员”);
getRate();
mUpdateRate.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
setRate();
}
});
}
私人空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱空箱率{
mAdminDatabase.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
if(dataSnapshot.exists()&&dataSnapshot.getChildrenCount()>0){
Map Map=(Map)dataSnapshot.getValue();
if(map.get(“rate”)!=null){
mRate=map.get(“rate”).toString();
mRateField.setText(mRate);
}
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
私有无效设置率(){
mRate=mRateField.getText().toString();
mAdminDatabase.child(“速率”).setValue(mRate);
}
希望能帮上大忙。

检查
FirebaseDatabase
中的规则。如果将它们设置为
true
,则无需进行身份验证。顺便说一句,这是一个不推荐的选择,你应该始终在这方面有一些安全性

希望有帮助。

试试这个:

mAdminDatabase = FirebaseDatabase.getInstance().getReference("Users").child("Admins");
  mUser = FirebaseDatabase.getInstance().getReference("Users");
它是否有效:D

如果不起作用,请尝试以下方法:

mAdminDatabase = FirebaseDatabase.getInstance().getReference("Users").child("Admins");
  mUser = FirebaseDatabase.getInstance().getReference("Users");
然后,您可以设置管理员的值

  mUser.child("Admins").child("rate").setValue("aString");

问题可能出在auth中。默认情况下,您需要登录才能读取和写入数据库。检查firebase的规则。@Juanje哦,我明白了,我不知道。有没有一种方法可以让我以某种方式公开限制,而不仅仅是用户?您的setRate函数有错误,请将编辑文本的值分配给一个变量,或者将edittext值直接分配给mAdminDatabase.child(“rate”).setValue(mRateField.getText().toString());我只是改变了限制。谢谢你,我刚改变了限制条件。谢谢你。