【发布时间】:2017-06-02 19:35:21
【问题描述】:
我正在开发一个聊天应用程序,并找到了一些关于如何在 Xamarin 中实现 Firebase 的示例。我想我已经完成了教程中的所有操作,但是我收到了这个错误:
Java.Lang.IllegalStateException: Default FirebaseApp is not initialized in this process XamarinChatApp.XamarinChatApp. Make sure to call FirebaseApp.initializeApp(Context) first.
所以,我所做的只是在错误发生之前添加这行代码:
Firebase.FirebaseApp.InitializeApp(this);
然而,这并没有改变任何东西。
这是完整的主要活动:
public class MainActivity : AppCompatActivity,IValueEventListener
{
private FirebaseClient firebase;
private List<MessageContent> lstMessage = new List<MessageContent>();
private ListView lstChat;
private EditText edtChat;
private FloatingActionButton fab;
public int MyResultCode = 1;
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
}
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView (Resource.Layout.Main);
firebase = new FirebaseClient(GetString(Resource.String.firebase_database_url));
Firebase.FirebaseApp.InitializeApp(this);
FirebaseDatabase.Instance.GetReference("chats").AddValueEventListener(this);
fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
edtChat = FindViewById<EditText>(Resource.Id.input);
lstChat = FindViewById<ListView>(Resource.Id.list_of_messages);
fab.Click += delegate
{
PostMessage();
};
if (FirebaseAuth.Instance.CurrentUser == null)
StartActivityForResult(new Android.Content.Intent(this, typeof(SignIn)), MyResultCode);
else
{
Toast.MakeText(this, "Welcome " + FirebaseAuth.Instance.CurrentUser.Email, ToastLength.Short).Show();
DisplayChatMessage();
}
}
private async void PostMessage()
{
var items = await firebase.Child("chats").PostAsync(new MessageContent(FirebaseAuth.Instance.CurrentUser.Email, edtChat.Text));
edtChat.Text = "";
}
public void OnCancelled(DatabaseError error)
{
}
public void OnDataChange(DataSnapshot snapshot)
{
DisplayChatMessage();
}
private async void DisplayChatMessage()
{
lstMessage.Clear();
var items = await firebase.Child("chats")
.OnceAsync<MessageContent>();
foreach (var item in items)
lstMessage.Add(item.Object);
ListViewAdapter adapter = new ListViewAdapter(this, lstMessage);
lstChat.Adapter = adapter;
}
}
}
问题发生在 OnCreate 中,就在:
FirebaseDatabase.Instance.GetReference("chats").AddValueEventListener(this);
我在这个论坛上找到了另一个解决方案,但他们所做的只是添加了上面的行并且它起作用了。对我来说,不幸的是没有。
任何帮助都会很棒:) 谢谢
【问题讨论】: