【问题标题】:Not able to save my Data to firebase in Android无法将我的数据保存到 Android 中的 firebase
【发布时间】:2020-04-25 11:44:20
【问题描述】:

我想从 Edittext 中检索 4 个字符串并将其保存为 firebase 实时数据库 firebase 中的所有权限都设置为 true。单击按钮后,Firebase 中不会保存任何数据。 我无法调试它

下面是我的代码

activity_main

<?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/SOURCE"
        android:layout_width="284dp"
        android:layout_height="49dp"
        android:layout_marginTop="32dp"
        android:hint="SOURCE"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.464"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.136" />

    <EditText
        android:id="@+id/DESTINATION"
        android:layout_width="276dp"
        android:layout_height="51dp"
        android:layout_marginTop="108dp"
        android:hint="DESTINATION"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.466"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.268" />

    <EditText
        android:id="@+id/TIME"
        android:layout_width="276dp"
        android:layout_height="51dp"
        android:layout_marginTop="196dp"
        android:hint="TIME"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.389" />

    <EditText
        android:id="@+id/FARE"
        android:layout_width="276dp"
        android:layout_height="51dp"
        android:layout_marginTop="268dp"
        android:hint="FARE"
        android:inputType="textPersonName"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.525"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/SWITCH"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="312dp"
        android:layout_marginBottom="296dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.532"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

我的 MainActivity 文件

package com.example.rupam;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class MainActivity extends AppCompatActivity {


    EditText source;
    EditText destination;
    EditText time;
    EditText fare;
    Button save;

    //////////////////////////////

    ///////Firebase ref//////////
    DatabaseReference databaseReference;
    ////////////////////////////

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

        ////////Find view by id section//////////

        source = (EditText) findViewById(R.id.SOURCE);
        destination = (EditText) findViewById(R.id.DESTINATION);
        time = (EditText) findViewById(R.id.TIME);
        fare = (EditText) findViewById(R.id.FARE);
        save = (Button) findViewById(R.id.SWITCH);

        /////////////////////////////////////////

        databaseReference = FirebaseDatabase.getInstance().getReference().child("USERS");

        ////////////On button click//////////////

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
    }

    public void saveData() {
        String src2 = source.getText().toString().trim();
        String dst2 = destination.getText().toString().trim();
        String tm2 = time.getText().toString().trim();
        String fr2 = fare.getText().toString().trim();

        SaveData saveData = new SaveData(src2, dst2, tm2, fr2);

        databaseReference.setValue(saveData);

    }
}

保存数据(类)

package com.example.rupam;

public class SaveData {

    ///Take 4 String////////
    String src;
    String dst;
    String tm;
    String fr;
    //////////////////////


    public String getSrc() {
        return src;
    }

    public void setSrc(String src) {
        this.src = src;
    }

    public String getDst() {
        return dst;
    }

    public void setDst(String dst) {
        this.dst = dst;
    }

    public String getTm() {
        return tm;
    }

    public void setTm(String tm) {
        this.tm = tm;
    }

    public String getFr() {
        return fr;
    }

    public void setFr(String fr) {
        this.fr = fr;
    }

    public SaveData(String src, String dst, String tm, String fr) {
        this.src = src;
        this.dst = dst;
        this.tm = tm;
        this.fr = fr;
    }
}

我的 Mainfest 文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.rupam">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

请帮助我哪里错了 构建没有错误

【问题讨论】:

  • databaseReference = FirebaseDatabase.getInstance().getReference("name").child("USERS");
  • 包含数据库。
  • 向你的 logcat 展示你面临什么样的问题

标签: java android firebase firebase-realtime-database


【解决方案1】:

您的onClick() 方法为空。你应该在这里打电话给saveData()

所以改成:

save.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});

进入

save.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Call method which storing values
        saveData();
    }
});

【讨论】:

【解决方案2】:

你犯了一个小错误,但不要担心。 当您设置 save.setOnClickListener 方法时,您不会将 saveData() 方法放入此方法中。因此您应该将 saveData() save.setOnClickListener 上的 strong> 方法:

你的错误:

save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

但正确的是:

save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           saveData();
        }
    });

【讨论】:

  • 我理解并补充说,但它仍然没有更新
  • 好的,我理解你的情况,但是当你点击 saveButton 时显示 logcat 是什么
【解决方案3】:

我已经尝试过您的提及代码,根据您的代码,您没有调用 保存数据();方法任何地方。所以要解决这个问题,请致电 保存数据();保存按钮上的方法单击如下。

save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    // Call method which storing values
    saveData();
}
});

如果您对此回答有任何疑问,请在评论中添加您的查询

【讨论】:

  • 我明白并补充说,但它仍然没有更新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多