Я создаю приложение типа социальных сетей и для основного канала. Я использую CardView
с Toolbar
внутри, чтобы легко дать мне возможность добавить меню параметров для удаления, редактирования или сообщения о сообщении. .
У меня есть функция для запуска профиля Activity
при нажатии на фотографию профиля пользователя в сообщении. Когда он открыт, он отображает некоторые простые статистические данные о пользователе и показывает вам все его сообщения.
Проблема, с которой я столкнулся, заключается в том, что класс PostViewHolder
выбрасывает NullPointerException
на Toolbar
при нажатии на фотографию профиля пользователя и попытке приложения запустить его профиль.
Весь этот процесс работал до того, как я добавил Toolbar
в CardView
, я просто пытался очистить свой подход к постам и добавить немного больше:
me: FATAL EXCEPTION: main
Process: com.apexsoftware.quotable, PID: 6821
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.Toolbar.inflateMenu(int)' on a null object reference
at com.apexsoftware.quotable.adapter.holders.PostViewHolder.<init>(PostViewHolder.java:80)
at com.apexsoftware.quotable.adapter.PostsByUserAdapter.onCreateViewHolder(PostsByUserAdapter.java:41)
Вот мой PostViewHolder
класс:
public PostViewHolder(View view, final OnClickListener onClickListener, boolean isAuthorNeeded) {
super(view);
this.context = view.getContext();
likesCounterTextView = (TextView) view.findViewById(R.id.tv_like_count);
likesImageView = (ImageView) view.findViewById(R.id.iv_like);
dateTextView = (TextView) view.findViewById(R.id.tv_date);
userTextView = (TextView) view.findViewById(R.id.tv_user);
quoteTextView = (TextView) view.findViewById(R.id.tv_quote);
authorImageView = (ImageView) view.findViewById(R.id.iv_profile);
postToolbar = view.findViewById(R.id.post_toolbar);
authorImageView.setVisibility(isAuthorNeeded ? View.VISIBLE : View.GONE);
postToolbar.inflateMenu(R.menu.menu_post);
//profileManager = ProfileManager.getInstance(context.getApplicationContext());
postManager = PostManager.getInstance(context.getApplicationContext());
userManager = UserManager.getInstance(context.getApplicationContext());
/*view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (onClickListener != null && position != RecyclerView.NO_POSITION) {
onClickListener.onItemClick(getAdapterPosition(), v);
}
}
});*/
likesImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if (onClickListener != null && position != RecyclerView.NO_POSITION) {
onClickListener.onLikeClick(likeController, position);
}
}
});
authorImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (onClickListener != null && position != RecyclerView.NO_POSITION) {
onClickListener.onAuthorClick(getAdapterPosition(), v);
}
}
});
}
Вот мой PostByUserAdapter
класс:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.row_post, parent, false);
toolbar = view.findViewById(R.id.post_toolbar);
return new PostViewHolder(view, createOnClickListener(), false);
}