我正在尝试在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;
错误在于此行
(Picasso.with(navigationView.getHeaderView(0).getContext()).load(uri).into(profilePic);)
错误是
java.lang.IllegalArgumentException:Target不能为null。
我尝试了不同的变体,例如&#34;这&#34;,但没有编译,&#34; getContext&#34;,&#34; getApplication&#34;但应用程序崩溃。
答案 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);