【问题标题】:how to save data in xamarine firestore如何在 xamarin firestore 中保存数据
【发布时间】:2019-12-15 16:51:44
【问题描述】:

这是我的代码:

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): 在 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): 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 12-16 20:08:22.896 E/AndroidRuntime(10311): at com.google.android.gms.internal.zzejp$zza.run(未知来源:7) 12-16 20:08:22.896 E/AndroidRuntime(10311): 在 java.lang.Thread.run(Thread.java:764) 12-16 20:08:22.896 E/AndroidRuntime(10311):原因:java.lang.ClassNotFoundException:在路径上找不到类“com.google.common.base.Preconditions”:DexPathList [[zip 文件“/ 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): 在 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)。

【问题讨论】:

  • 您需要捕获异常并捕获/打印/记录其详细信息
  • 为了分析这个错误的原因,能否请您按照jason所说的那样发布这个错误的完整日志?
  • 谢谢我编辑了问题以附加程序的输出
  • 根据你贴的错误日志,你可以尝试在你的项目中添加nuget Xamarin.Google.Guava,再试一次。
  • 我在我的项目中添加了 Xamarin.Google.Guava

标签: android xamarin google-cloud-firestore


【解决方案1】:

我建议你使用运行时数据库来实现,这里是运行 GIF。

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

 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

【讨论】:

    猜你喜欢
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2021-01-25
    • 2019-04-21
    相关资源
    最近更新 更多