【发布时间】:2018-10-24 01:17:28
【问题描述】:
我目前正在尝试更改图像视图的颜色。我正在尝试从片段中执行此操作,并且在我切换活动之前它可以正常工作。当我返回用于更改图像颜色的片段时,出现此错误,
Attempt to invoke virtual method 'int android.content.Context.getColor(int)' on a null object reference
我使用下面的代码来改变我的图像的颜色,
imgUpvote.setColorFilter(ContextCompat.getColor(getContext(), R.color.lGrey));
有人知道解决办法吗?仅当我切换活动时才会出现此错误,感谢您的任何回答。
编辑:这里是代码所在的位置,
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<postsGetInfo, postsGetInfoViewHolder>(postsGetInfo.class, R.layout.posts_layout,postsGetInfoViewHolder.class,postRef) {
@Override
protected void populateViewHolder(final postsGetInfoViewHolder viewHolder, postsGetInfo model, int position) {
final String postKey = getRef(position).getKey();
UpdateTheDisplayVotes(postKey); //Displays the votes at the start of creation
postRef.removeEventListener(VoteListener);
defaultVote = VotesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.hasChild(postKey)) {
VotesRef.child(postKey).child(current_user_id).child("votes").setValue("none");
}
String voteStatus = dataSnapshot.child(postKey).child(current_user_id).child("votes").getValue().toString();
if (voteStatus.equals("upvoted")){
ImageView btnUpvote = viewHolder.myView.findViewById(R.id.imgUpvote);
ImageView btnDownvote = viewHolder.myView.findViewById(R.id.imgDownvote);
btnUpvote.setColorFilter(ContextCompat.getColor(getActivity(), R.color.lBlue));
btnDownvote.setColorFilter(ContextCompat.getColor(getActivity(), R.color.lGrey));
}if (voteStatus.equals("downvoted")){
ImageView btnUpvote = viewHolder.myView.findViewById(R.id.imgUpvote);
ImageView btnDownvote = viewHolder.myView.findViewById(R.id.imgDownvote);
btnUpvote.setColorFilter(ContextCompat.getColor(getActivity(), R.color.lGrey));
btnDownvote.setColorFilter(ContextCompat.getColor(getActivity(), R.color.Black));
}if (voteStatus.equals("none")){
ImageView btnUpvote = viewHolder.myView.findViewById(R.id.imgUpvote);
ImageView btnDownvote = viewHolder.myView.findViewById(R.id.imgDownvote);
btnUpvote.setColorFilter(ContextCompat.getColor(getActivity(), R.color.lGrey));
btnDownvote.setColorFilter(ContextCompat.getColor(getActivity(), R.color.lGrey));
}
}
【问题讨论】:
-
getActivity()做同样的事情 -
分享您使用的代码
imgUpvote.setColorFilter() -
会的,给我一秒钟
-
更新了帖子,upvote/downvote的颜色将在开始时发生。
标签: java android android-fragments colors nullpointerexception