数据未显示在firebase数据库控制台中

时间:2017-09-24 19:49:08

标签: android firebase firebase-realtime-database

我是firebase的新手,我正在尝试使用我的Android应用程序。在我的应用程序中,我只是在数据库上保存名称,这是非常基本的消息显示数据已成功保存,但当我试图在firebase数据库控制台中看到它时,它甚至没有显示任何根网址没有显示。对于读取和写入权限,我还将Firebase规则设置为true。

请查看下面的代码:

POJO班级:

package com.app.elaryx;

public class Data {

String name;

public Data(){

}

public Data(String name){

    this.name = name;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
 }
}

JAVA代码:

public class MainActivity extends AppCompatActivity {

Button button;
EditText name;
DatabaseReference dRef;

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

    dRef = FirebaseDatabase.getInstance().getReference();

    button = (Button)findViewById(R.id.button);
    name = (EditText)findViewById(R.id.name);

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            button.setText("Saving...");

            if(name.getText().toString().equals(""))
            {
                button.setText("SUBMIT");
                Toast.makeText(getApplicationContext(), "Enter name", Toast.LENGTH_SHORT).show();
            }
            else {
                Data d = new Data();

                d.setName(name.getText().toString());

                dRef.push().setValue(d).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {

                        if (task.isSuccessful()) {

                            button.setText("SUBMIT");
                            Toast.makeText(getApplicationContext(), "Data Saved", Toast.LENGTH_SHORT).show();
                        } else {

                            button.setText("SUBMIT");
                            Toast.makeText(getApplicationContext(), "" + task.getException().getMessage().toString(), Toast.LENGTH_SHORT).show();
                        }
                    }
                });

            }
        }
    });
  }
}

My Firebase console Image here

在代码中,一切似乎都很好。请让我知道问题

1 个答案:

答案 0 :(得分:0)

你犯了一个非常愚蠢的错误,因此你没有得到结果,因为你已经在模型类中设置了值,但是在获得值的时候,你没有做任何事情。

设置一个值为d.setName(name.getText().toString()),但是当您传递数据时,这需要一些值,为此您可以使用 d.getName提供结果(),机器不会这样做。

在你的setValue代码中这样做,我确定你会得到结果。我们有时会忽略这类错误,但这些错误确实非常重要,否则你会受到影响。

dRef.push().setValue(d.getName()).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {

                    if (task.isSuccessful()) {

                        button.setText("SUBMIT");
                        Toast.makeText(getApplicationContext(), "Data Saved", Toast.LENGTH_SHORT).show();
                    } else {

                        button.setText("SUBMIT");
                        Toast.makeText(getApplicationContext(), "" + task.getException().getMessage().toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            });

从错误中吸取教训,每天变得更好!快乐学习。如果您发现这个答案很有用,请在此答案的右侧打勾来标记此答案。

<强> EDITS

试试这种方法并告诉我它是否有效!

首先在您的DatabaseReference中进行初始化,如下所示

dRef = FirebaseDatabase.getInstance().getReference().child("Names");

然后在你的代码中这样做:

Data d = new Data();

            d.setName(name.getText().toString());

            dRef.setValue(d.getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {

                    if (task.isSuccessful()) {

                        button.setText("SUBMIT");
                        Toast.makeText(getApplicationContext(), "Data Saved", Toast.LENGTH_SHORT).show();
                    } else {

                        button.setText("SUBMIT");
                        Toast.makeText(getApplicationContext(), "" + task.getException().getMessage().toString(), Toast.LENGTH_SHORT).show();
                    }
                }
            });