所以我尝试了三次,但都没有成功地制作出一个能够与Firebase通信的Android应用程序。就像 这个教程所展示的那样,我无法不想到是我或者它(最可能是前者)缺少了一些东西。
我正在制作的示例应用程序简单地包含一个TextView,该TextView应该更新为Firebase上任何更改的内容,Firebase的URL为 https://dummy-firebase.firebaseio.com/(由于我无法创建公共Firebase,如果需要,您可以粘贴自己Firebase的URL以测试代码)。以下是Firebase上的快照:
我正在制作的示例应用程序简单地包含一个TextView,该TextView应该更新为Firebase上任何更改的内容,Firebase的URL为 https://dummy-firebase.firebaseio.com/(由于我无法创建公共Firebase,如果需要,您可以粘贴自己Firebase的URL以测试代码)。以下是Firebase上的快照:
@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" />
这里是清晰展示INTERNET权限的清单图片:
现在,当我从浏览器上改变Firebase上的数据时,我相信TextView中的数据应该更新。但是这并没有发生,我曾经尝试通过EditText和Button来把数据放到之前的Firebase Android项目中,但都没有成功。
非常感谢您花时间查看此问题。由于Firebase看起来非常易于设置(JavaScript版本确实如此),我真的不知道我错在哪里!
谢谢!