如何在xamarine firestore中保存数据

问题描述 投票:0回答:1

这是我的代码:

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using firestore;
using Firebase.Firestore;
using Firebase;
using Java.Util;

namespace firestore
    {
[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    EditText phone;
    EditText password;
    Button save;
    FirebaseFirestore database;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);
        phone = (EditText)FindViewById(Resource.Id.phone);
        password = (EditText)FindViewById(Resource.Id.password);
        save=  (Button)FindViewById(Resource.Id.save);


        save.Click += Save_Click;
        database = GetDatabase();
    }

    private void Save_Click(object sender, System.EventArgs e)
    {
        HashMap map = new HashMap();
        map.Put("phone",phone.Text);
        map.Put("password",password.Text);
        DocumentReference docref = database.Collection("users").Document();
        docref.Set(map);
    }

    public FirebaseFirestore GetDatabase()
    {
        FirebaseFirestore database;
        var options = new FirebaseOptions.Builder()
            .SetProjectId("mohammed-682b7")
            .SetApplicationId("mohammed-682b7")
            .SetApiKey("AIzaSyC_atciyoeH0BMCD3rTTHPGtZa4EU1fu7k")
            .SetDatabaseUrl("https://mohammed-682b7.firebaseio.com")
            .SetStorageBucket("mohammed-682b7.appspot.com")
            .Build();
        var app = FirebaseApp.InitializeApp(this, options);

        database = FirebaseFirestore.GetInstance(app);
        return database;
    }
}

我收到此错误:

未处理的例外:Java.Lang.RuntimeException:发生<Timeout exceeded getting exception details>

我遵循了此链接中的解释:https://www.youtube.com/watch?v=mneY6H0zMNE

这是输出:在java.util.concurrent.FutureTask.run(FutureTask.java:266)12-16 20:08:22.896 E / AndroidRuntime(10311):at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)12-16 20:08:22.896 E / AndroidRuntime(10311):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)12-16 20:08:22.896 E / AndroidRuntime(10311):at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:636)12-16 20:08:22.896 E / AndroidRuntime(10311):位于com.google.android.gms.internal.zzejp $ zza.run(未知来源:7)12-16 20:08:22.896 E / AndroidRuntime(10311):at java.lang.Thread.run(Thread.java:764)12-16 20:08:22.896 E / AndroidRuntime(10311):由以下原因引起:java.lang.ClassNotFoundException:在路径:DexPathList [[zip file“ /下未找到类” com.google.common.base.Preconditions“ data / app / firestore.firestore-h-EYnpx7ZY1EvLUwpnKzoQ == / base.apk“],nativeLibraryDirectories = [/ data / app / firestore.firestore-h-EYnpx7ZY1EvLUwpnKzoQ == / lib / x86,/data/app/firestore.firestore -h-EYnpx7ZY1EvLUwpnKzoQ == / base.apk!/ lib / x86,/ system / lib,/ vendor / lib]]12-16 20:08:22.896 E / AndroidRuntime(10311):在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)12-16 20:08:22.896 E / AndroidRuntime(10311):位于java.lang.ClassLoader.loadClass(ClassLoader.java:379)12-16 20:08:22.896 E / AndroidRuntime(10311):at java.lang.ClassLoader.loadClass(ClassLoader.java:312)12-16 20:08:22.896 E / AndroidRuntime(10311):...还有20个未处理的异常:

Java.Lang.RuntimeException:

线程完成:#5线程0x5已退出,代码为0(0x0)。线程完成:#7线程0x7已退出,代码为0(0x0)。线程完成:#4线程0x4已退出,代码为0(0x0)。线程完成:#6线程0x6已退出,代码为0(0x0)。

android xamarin google-cloud-firestore
1个回答
0
投票

我建议您使用运行时数据库来实现这一目标,这里正在运行GIF。enter image description here

这是我的有关将数据保存到数据库的代码。

 private void Save_Click(object sender, System.EventArgs e)
    {
        string firebaseURL = "https://fir-databasedemo-62a72.firebaseio.com/";
        var mDatabase = FirebaseDatabase.GetInstance(firebaseURL).GetReference("fir-databasedemo-62a72");

        TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
       string s= Convert.ToInt64(ts.TotalMilliseconds).ToString();

        string username = "User" + s;

        var resp = mDatabase.Child(username);

        var resp2=   resp.SetValue("Phone");
        var resp3 = resp.SetValue("Password");
        resp = mDatabase.Child(username + "/Phone");
        resp.SetValue(phone.Text);

        resp = mDatabase.Child(username+"/Password");
        resp.SetValue(password.Text);

    }

这是我的演示。https://github.com/851265601/FireBaseDatabaseDemoXA

这里是有关它的视频。https://www.youtube.com/watch?v=SWajpCQZ7Z0

© www.soinside.com 2019 - 2024. All rights reserved.