私はある時点で、Query#addListenerForSingleValueEvent()
メソッドを使用してFirebaseデータベースから変数を取得しています。コードは以下の通りである:onDataChangeが変数を取得した後に変数にアクセスする
void initCurrentUserProfile() {
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
mFirebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference userProfileReference = mFirebaseDatabase.getReference().child("users");
userProfileReference = userProfileReference.child(mUser.getUid());
Query userProfileQuery = userProfileReference.orderByKey();
userProfileQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This is the variable that I want to get
mUserProfile = dataSnapshot.getValue(UserProfile.class);
}
...
私は私の活動のonCreate()
ですぐにユーザデータを持つクラスですmUserProfile
へのアクセスを、取得した画像にこの中に含まれているのURLをロードしたいですmUserProfile
変数。
@Override
protected void onCreate(Bundle savedInstanceState) {
...
initCurrentUserProfile();
Picasso.with(this).load(Uri.parse(mUserProfile.getProfilePicUrl())).into(mProfilePictureImageView);
}
Firebaseデータベースの非同期性を、私はそれを行うとNullPointerException
得ることができないため、問題は、次のとおりです。
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.grigori.fitnessapp.Profile.UserProfile.getProfilePicUrl()' on a null object reference
あなたは私が順番にやるかもしれないものについての任意の提案はありますかこの変数にアクセスするには?それ以外の場合は常にnullになりますonCreate()
方法でonDataChange()
方法とないで
Picasso.with(this)
.load(Uri.parse(mUserProfile.getProfilePicUrl()))
.into(mProfilePictureImageView);
右:
ありがとう、これで問題は解決しました。 –