首页 > 解决方案 > 添加片段时 Glide 库错误或应用程序崩溃,并显示该特定问题的图像

问题描述

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

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

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(isAdded()) {
                    User user = dataSnapshot.getValue(User.class);
                    assert user != null;
                    username.setText(user.getUsername());
                    if (user.getImageURL().equals("default")) {
                        image_profile.setImageResource(R.mipmap.ic_launcher);
                    } else {
                        Glide.with(ProfileFragment.this).load(user.getImageURL()).into(image_profile);
                    }
                }
            }

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

            }
        });

添加片段时我的应用程序崩溃。

标签: javaandroidandroid-glide

解决方案


您需要尝试这样的代码:

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        if(isAdded()) {
            User user = dataSnapshot.getValue(User.class);
            assert user != null;
            username.setText(user.getUsername());
            if (user.getImageURL().equals("default")) {
                image_profile.setImageResource(R.mipmap.ic_launcher);
            } else {
                if(getAcivity()!=null && !getAcivity().isFinishing())
                    Glide.with(getAcivity()).load(user.getImageURL()).into(image_profile);
            }
        }
    }

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

    }
});

推荐阅读