所以我已经尝试了3次,并且没有成功制作可与Firebase通信的Android应用程序。就像the tutorial所做的那样简单,我不禁想到我或它(很可能是前者)都缺少某些东西。
我正在制作的示例应用只包含一个TextView,应该在https://dummy-firebase.firebaseio.com/对我的Firebase进行任何更改时进行更新(因为我无法创建公开的Firebase,如果您愿意,可以粘贴您自己的firebase的URL以测试代码)。以下是Firebase上的内容快照:
这是我唯一活动的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Firebase f = new Firebase("https://dummy-firebase.firebaseio.com");
f.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot arg0) {
TextView textViewSample = (TextView) findViewById(R.id.sampleTextView);
textViewSample.setText(arg0.getValue(String.class));
}
@Override
public void onCancelled() {
// TODO Auto-generated method stub
}
});
}
这是唯一的XML文件,activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/sampleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
这是Manifest的图片,因此您可以清楚地看到INTERNET权限:
现在,当我从浏览器更改Firebase上的数据时,我相信TextView中的数据应该更新。这种情况没有发生,而且我在之前的Firebase Android项目尝试中使用EditTexts和Buttons尝试使用EditTexts和Buttons进行数据测试失败了。
提前感谢您抽出宝贵时间来查看此内容。由于Firebase似乎设置得如此简单(并且适用于Javascript版本),我真的难以理解我做错了什么!
谢谢!
答案 0 :(得分:4)
您可以尝试使用最新的SDK(v1.0.2),看看它是否解决了问题?我们刚刚为Android的某些SSL限制添加了一种解决方法。
答案 1 :(得分:0)
试试这段代码。它正在使用pojo类。
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Creating firebase object
Firebase ref = new Firebase(Config.FIREBASE_URL);
//Getting values to store
String name = editTextName.getText().toString().trim();
String address = editTextAddress.getText().toString().trim();
//Creating Person object
Person person = new Person();
//Adding values
person.setName(name);
person.setAddress(address);
//Storing values to firebase
ref.child("Person").setValue(person);
//Value event listener for realtime data update
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
//Getting the data from snapshot
Person person = postSnapshot.getValue(Person.class);
//Adding it to a string
String string = "Name: "+person.getName()+"\nAddress: "+person.getAddress()+"\n\n";
//Displaying it on textview
textViewPersons.setText(string);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
}
});