在NavigationView中使用picasso

时间:2018-02-05 00:14:23

标签: android picasso

我正在尝试在Activity中使用picasso并使用NavigationView(用于抽屉)。

这是我的最新消息。



@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_drawer);

        mDrawerLayout = findViewById(R.id.drawer_main_search_layout);
        final NavigationView navigationView = findViewById(R.id.nav_view_main_search);
        navigationView.setNavigationItemSelectedListener(this);
        userEmail = navigationView.getHeaderView(0).findViewById(R.id.nav_user_email);
        profilePic = findViewById(R.id.profile_pic_drawer);

        FirebaseAuth auth = FirebaseAuth.getInstance();
        if (auth.getCurrentUser() != null) {
            userEmail.setText(auth.getCurrentUser().getEmail());
            uuid = auth.getCurrentUser().getUid();
            Log.d(TAG, "email_test_log: " + auth.getCurrentUser().getEmail());

            storageRef.child(uuid + "/profile_pic/main.jpg").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    // Got the download URL for 'users/me/profile.png'
                    Log.d(TAG, "TEST_PIC_LOC: "+ uri);
                    Picasso.with(navigationView.getHeaderView(0).getContext()).load(uri).into(profilePic);
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    // Handle any errors
                }
            });
        }
        showFragment(new SearchFragment());
    }
&#13;
&#13;
&#13;

错误在于此行

(Picasso.with(navigationView.getHeaderView(0).getContext()).load(uri).into(profilePic);)

错误是

  

java.lang.IllegalArgumentException:Target不能为null。

我尝试了不同的变体,例如&#34;这&#34;,但没有编译,&#34; getContext&#34;,&#34; getApplication&#34;但应用程序崩溃。

3 个答案:

答案 0 :(得分:2)

变化:

 profilePic = findViewById(R.id.profile_pic_drawer);
 Picasso.with(navigationView.getHeaderView(0).getContext()).load(uri).into(profilePic);

由:

profilePic = (ImageView)findViewById(R.id.profile_pic_drawer);
Picasso.with(getApplicationContext()).load(uri).into(profilePic);

或检查你的uri值,可能是null

答案 1 :(得分:1)

此错误有两种可能性:资源ID为null或您的上下文可能为空。

检查您的资源ID:

Picasso.with(YourActivityName.this).load(uri).into(profilePic);

其次是您的活动上下文传递如下:

{{1}}

仍然出现错误只是告诉我代码我会帮助你。

答案 2 :(得分:1)

试试这个:

Picasso.with(getAplicationContext()).load(uri).into(profilePic);