更改图像颜色 [重复]
Posted
技术标签:
【中文标题】更改图像颜色 [重复]【英文标题】:Changing Image Colour [duplicate] 【发布时间】: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));
【问题讨论】:
使用getActivitygetActivity()
做同样的事情
分享您使用的代码imgUpvote.setColorFilter()
会的,给我一秒钟
更新了帖子,upvote/downvote的颜色将在开始时发生。
【参考方案1】:
尝试在您的fragment
中像这样获取Context
public class BlankFragment extends Fragment
public BlankFragment()
Context mContext;
@Override
public void onAttach(Context context)
super.onAttach(context);
mContext = context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
比这样使用
kimgUpvote.setColorFilter(ContextCompat.getColor(mContext, R.color.lGrey));
【讨论】:
谢谢,我试试看 工作就像一个魅力,感谢您的精彩回答 @BenHenderson 很乐意为您提供帮助以上是关于更改图像颜色 [重复]的主要内容,如果未能解决你的问题,请参考以下文章