getContext() 在 Fragment 中返回 null。视图似乎未附加

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


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


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 上。


以下是错误的 logcat:


java.lang.NullPointerException: 

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


哆啦的时光机
浏览 215回答 3
3回答

桃花长相依

在网上查了各种资料,终于这个起作用了。        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            User user = dataSnapshot.getValue(User.class);            username.setText(user.getUsername());            if (user.getImageURL().equals("default")){                image_profile.setImageResource(R.mipmap.ic_launcher);            } else {                if(getContext()!=null)               Glide.with(getActivity()).load(user.getImageURL()).into(image_profile);            }        }要了解有关片段生命周期的更多信息

BIG阳

在片段中使用 getActivity() 作为上下文,如下所示:下面的代码: Glide.with(getActivity())             .load(imageUri)             .into(imageview);

收到一只叮咚

只需将检查添加到 nullif (getContext() != null) {    Glide.with((getContext())).load(user.getImgURl()).into(image_profile);}并在 onDestroyView() 或 onDestroy() 中移除 Firebase 监听器:reference.removeEventListener(listener);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java