gpt4 book ai didi

java - getContext() 在 Fragment 中返回 null。 View 似乎是独立的

转载 作者:行者123 更新时间:2023-11-30 10:07:28 24 4
gpt4 key购买 nike

Glide.with((getContext())).load(user.getImgURl()).into(image_profile);

以上行将 getContext 返回为 null,因此允许应用程序崩溃。我已将其添加到 onDataChange 方法下的 fragment 中,如下所示。

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view=inflater.inflate(R.layout.fragment_profile, container, false);

image_profile=view.findViewById(R.id.profile_image);
username=view.findViewById(R.id.username);


storageReference=FirebaseStorage.getInstance().getReference("uploads");

fuser=FirebaseAuth.getInstance().getCurrentUser();
reference=FirebaseDatabase.getInstance().getReference("Users").child(fuser.getUid());




reference.addValueEventListener(new ValueEventListener() {


@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


User user= dataSnapshot.getValue(User.class);
username.setText(user.getUsername());

if(user.getImgURl()!= null && user.getImgURl().equals("default")){
image_profile.setImageResource(R.mipmap.ic_launcher);
}else{

Glide.with((getContext())).load(user.getImgURl()).into(image_profile);

}

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});



image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openImage();
}
});


return view;
}

代码应该从 firebase 存储中检索图像并将其显示到 image_profile 上。

错误日志如下:

java.lang.NullPointerException: 

您不能在 getActivity() 返回 null 的尚未附加的 View 或 fragment 上开始加载(这通常发生在附加 fragment 之前或 fragment 被销毁之后调用 getActivity() 时)。

        at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:31)
at com.bumptech.glide.Glide.getRetriever(Glide.java:675)
at com.bumptech.glide.Glide.with(Glide.java:707)
at com.hello.khushboo.messaging.Fragments.ProfileFragment$1.onDataChange(ProfileFragment.java:110)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.5:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.5:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.5:55)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

感谢任何帮助。提前谢谢你。

最佳答案

在 fragment 中使用 getActivity() 作为这样的上下文: 下面的代码:

 Glide.with(getActivity())
.load(imageUri)
.into(imageview);

关于java - getContext() 在 Fragment 中返回 null。 View 似乎是独立的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54275374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com