I have a fragment, an activity, and an adapter in my UI. Here is the name of all these program:
The page right now is in 1 fragment which is homePageFragment. The number[1-5] is the fragment tab store in MainActivity. The MainAdapter is the list of post comes with user icons(which is in blue color). The homePageFragment is to store 1 fragment. The OtherProfileFragment is the Fragment I want to transfer to if the users click the icon, It will transfer from 1 to [3]. Here is the code I've done on the MainAdapter:
Picasso.get().load(pPicUrl).into(holder.profileView);
        holder.profileView.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d("debug_routing", pPicUrl + "<-url");
                //transfer based on user id
                Query q = FirebaseFirestore.getInstance().collection("users").whereEqualTo("username", userName);
                q.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if(task.isSuccessful()){
                            userInfo.clear();
                            for(QueryDocumentSnapshot document : task.getResult()){
                                String uid = document.getString("user_id");
                                Log.d("debug_routing", "found uid ->" + uid);
                                find_uid = uid;
                                if(uid == null){
                                    Toast.makeText(getApplicationContext(), "No related user found", Toast.LENGTH_SHORT).show();
                                }
                                Bundle bundle = new Bundle();
                                Log.d("debug_routng", find_uid + " " + userName + " " + fullName + " " + pPicUrl);
                                userInfo.add(find_uid);
                                userInfo.add(userName);
                                userInfo.add(fullName);
                                userInfo.add(pPicUrl);
                                otherProfileFragment = new OtherProfileFragment();
                                bundle.putStringArrayList("user_info", userInfo);
                                otherProfileFragment.setArguments(bundle);
                                FragmentManager manager = ((AppCompatActivity)context).getSupportFragmentManager();
                                manager.beginTransaction().replace(R.id.feed_container, otherProfileFragment).commit();
                                mWallButton.setBackgroundColor(Color.parseColor("#ECEFF1")); //Error Occur Here
                                homeButton.setBackgroundColor(Color.WHITE); //Error also
                            }
                        }else {
                            Log.d("debug_routing", "cannot found");
                        }
                    }
                });
                Toast.makeText(v.getContext(), "The icon is clicked", Toast.LENGTH_LONG).show();
            }
        });
Everything works until the mWallButton line, which is declared as a ImageButton [3] in MainActivity. The mWallButton should turn grey since I redirect from 1 to [3]. 1 ImageButton will turn white and [3] will turn grey.
When I click the blue icon, it will show this error below:
Attempt to invoke virtual method 'void android.widget.ImageButton.setBackgroundColor(int)' on a null object reference
This is how I declare mWallButton in MainActivity.
mWallButton = findViewById(R.id.navigation_wall);
My question is, how can I declare mWallButton(MainActiivty) in adapter? I've search many tutorial but out of luck. Any help or comment would appropriate. Thanks

 
    