数据未上传到Firebase数据库(Android Studio)

时间:2020-05-11 20:00:21

标签: android firebase firebase-realtime-database

我已经在Android Studio上创建了一个非常简单的应用,我想连接到Firebase。我创建了一个课程:

public class Lek {

    public String nazwa;
    public String nazwa1;

    public Lek() {
    }

    public String getNazwa() {
        return nazwa;
    }

    public String getNazwa1() {
        return nazwa1;
    }

    public void setNazwa(String nazwa) {
        this.nazwa = nazwa;
    }

    public void setNazwa1(String nazwa1) {
        this.nazwa1 = nazwa1;
    }
}

在MainActivity中,我尝试连接到Firebase数据库:

public class MainActivity extends AppCompatActivity {

    EditText e1, e2;
    Button b1;
    DatabaseReference reff;
    Lek lek;

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

        e1 = findViewById(R.id.editText);
        e2 = findViewById(R.id.editText2);
        b1 = findViewById(R.id.button);
        lek = new Lek();


        reff = FirebaseDatabase.getInstance().getReference().child("lek");
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                lek.setNazwa(e1.getText().toString().trim());
                lek.setNazwa(e2.getText().toString().trim());

                reff.push().setValue(lek);
            }
        });
    }
}

我还创建了一个简单的.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Name"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Name"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/editText" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/editText2" />
</androidx.constraintlayout.widget.ConstraintLayout>

但是问题是数据没有正确上传到网站上。我制定了关于书写和阅读的规则。在Android Studio中,我已正确连接并牢固地设置了依赖项。当我尝试上传数据时,它们没有出现在网站上。我的Google帐户在网站和Android Studio中都是相同的。有人有同样的问题吗?

编辑: 我已经成功创建了Toast方法,但失败了,但是它在屏幕上没有显示任何内容:

 reff.child("lek1").setValue(lek)
                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            // Write was successful!
                            // ...
                            Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_LONG).show();
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            // Write failed
                            // ...
                            Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_LONG).show();
                        }
                    });

1 个答案:

答案 0 :(得分:0)

嗨,尝试一下:

  1. 首先 Lek类
  2. 中的nazwa和nazwa 1变量的创建构造器

在哪里创建新对象:

lek = new Lek();

...删除该行并附加代码在按钮上单击以不使用该类来上传数据,而是使用HashMap来实现,

HashMap<String, Object> lekHash = new Hashmap();
lekHash.put("lek1", e1.getText().toString().trim());
lekHash.put("lek2", e2.getText().toString().trim();

之后,您现在可以像这样设置参考值:

reff.child("lek").setValue(lekHash).addOnCompleteListener(new OnComple...){
    if(task.isSuccessful){
        //Toast Whatever here
    }
}

很显然,所有这些“代码”实际上都不是代码,不幸的是,我没有我的IDE,但希望您能指点一下。并尝试对变量使用更具描述性的名称,这样更易​​于理解。另外,我推荐一个名为delegation.

的概念