Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我无法从Firebase检索该值_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 为什么我无法从Firebase检索该值

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

我能够构建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)检索所有信息

这是我的规则

{
  "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);

}
}