Android 为什么我无法从Firebase检索该值
我能够构建apk,我有LoginActivity.java、SignupActivity.java、StoreNameAndType.java和User.java、RetrieveDataActivity.java 我还能够将apk部署到我的android手机中,应用程序与layout loginactivity、signupactivity、StoreName和TypeActivity完美配合 retrieveDataActivity的布局是在我在登录布局中完成登录之后。但是,当它移动到layout retrievedataactivity时,它将在10秒内显示布局UI,并崩溃 为什么我不能从firebase的用户那里检索到一堆数据?我在YouTube上看了教程,但是布局崩溃了。我的密码有问题吗 我以用户身份登录(3wgmOhWlUUcyoBQXKZWnhw3K7Ik2) 这是我的数据库树。我想从用户id(yKlWu19vhqQXfL2tDlBNfMSduMe2)检索所有信息 这是我的规则Android 为什么我无法从Firebase检索该值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我能够构建apk,我有LoginActivity.java、SignupActivity.java、StoreNameAndType.java和User.java、RetrieveDataActivity.java 我还能够将apk部署到我的android手机中,应用程序与layout loginactivity、signupactivity、StoreName和TypeActivity完美配合 retrieveDataActivity的布局是在我在登录布局中完成登录之后。但是,当它移动到lay
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
这里是我的RetrieveDataActivity.java
public class RetrieveDataActivity extends AppCompatActivity implements
ValueEventListener {
private DatabaseReference databaseReference, mNameReference,
mTypeReference, mLocationReference, mLatReference, mLongReference;
private TextView mNameView, mTypeView, mLatView, mLongView;
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrievedata);
databaseReference = FirebaseDatabase.getInstance().getReference().child("yKlWu19vhqQXfL2tDlBNfMSduMe2");
mNameReference = databaseReference.child("name");
mTypeReference = databaseReference.child("type");
mLocationReference = databaseReference.child("location");
mLatReference = mLocationReference.child("latitude");
mLongReference = mLocationReference.child("longitude");
mNameView = (TextView) findViewById(R.id.textViewName);
mTypeView = (TextView) findViewById(R.id.textViewType);
mLatView = (TextView) findViewById(R.id.textViewLat);
mLongView = (TextView) findViewById(R.id.textViewLong);
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue(String.class)!=null)
{
String key = dataSnapshot.getKey();
if(key.equals("name"))
{
String name = dataSnapshot.getValue(String.class);
mNameView.setText(name);
}else if(key.equals("type"))
{
String type = dataSnapshot.getValue(String.class);
mTypeView.setText(type);
}else if(key.equals("latitude"))
{
String lat = dataSnapshot.getValue(String.class);
mLatView.setText(lat);
}else if(key.equals("longitude"))
{
String log = dataSnapshot.getValue(String.class);
mLongView.setText(log);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
@Override
protected void onStart() {
super.onStart();
mNameReference.addValueEventListener(this);
mTypeReference.addValueEventListener(this);
mLatReference.addValueEventListener(this);
mLongReference.addValueEventListener(this);
}
}
你的应用程序崩溃了吗?如果是这样,请编辑您的问题,以包括logcat中显示的完整堆栈跟踪。u表示所有代码?您没有描述您遇到的问题。如果您收到崩溃或错误消息,请在问题中包含该错误的堆栈跟踪。它将在Android Studio的logcat窗口中打印。如果某件事情没有如预期的那样起作用,请解释你所看到的情况。了解数据库的安全规则也会很有帮助。好的,我将详细介绍。可以吗,先生?这个链接显示了在Android Studio中找到堆栈跟踪的位置。错误消息应该帮助您理解问题,并且您应该在问题中包含错误消息,以便其他人帮助您。
public class RetrieveDataActivity extends AppCompatActivity implements
ValueEventListener {
private DatabaseReference databaseReference, mNameReference,
mTypeReference, mLocationReference, mLatReference, mLongReference;
private TextView mNameView, mTypeView, mLatView, mLongView;
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrievedata);
databaseReference = FirebaseDatabase.getInstance().getReference().child("yKlWu19vhqQXfL2tDlBNfMSduMe2");
mNameReference = databaseReference.child("name");
mTypeReference = databaseReference.child("type");
mLocationReference = databaseReference.child("location");
mLatReference = mLocationReference.child("latitude");
mLongReference = mLocationReference.child("longitude");
mNameView = (TextView) findViewById(R.id.textViewName);
mTypeView = (TextView) findViewById(R.id.textViewType);
mLatView = (TextView) findViewById(R.id.textViewLat);
mLongView = (TextView) findViewById(R.id.textViewLong);
}
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue(String.class)!=null)
{
String key = dataSnapshot.getKey();
if(key.equals("name"))
{
String name = dataSnapshot.getValue(String.class);
mNameView.setText(name);
}else if(key.equals("type"))
{
String type = dataSnapshot.getValue(String.class);
mTypeView.setText(type);
}else if(key.equals("latitude"))
{
String lat = dataSnapshot.getValue(String.class);
mLatView.setText(lat);
}else if(key.equals("longitude"))
{
String log = dataSnapshot.getValue(String.class);
mLongView.setText(log);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
@Override
protected void onStart() {
super.onStart();
mNameReference.addValueEventListener(this);
mTypeReference.addValueEventListener(this);
mLatReference.addValueEventListener(this);
mLongReference.addValueEventListener(this);
}
}