android - 如何使用 onclick 在回收站视图中打开活动?
问题描述
我正在尝试构建一个新闻应用程序,一旦用户单击新闻项目,它将在另一个活动中详细打开新闻。但是目前,一旦用户单击任何新闻项目,我在尝试打开活动时遇到问题。
我正在使用回收器视图来解析我使用 volley 从 JSON 获得的响应以进行 Internet 连接,我已经尝试了 StackOverflow 中已经说明的一些示例,但似乎没有达到我的预期。
@Override
public void onBindViewHolder(@NonNull final newsAdapter.viewHolder viewHolder, int i) {
dataModel dataModel = mDataModel.get(i);
viewHolder.mTextView.setText(dataModel.getTitle());
viewHolder.mTextDescrip.setText(dataModel.getDescrip());
Glide.with(context).load(dataModel.getImage()).into(viewHolder.mImageView);
viewHolder.mclickListener.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(new Intent(context, newsActivity.class));
}
});
}
public viewHolder(@NonNull View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.layout_text);
mImageView = itemView.findViewById(R.id.layout_image);
mTextDescrip = itemView.findViewById(R.id.layout_descrip);
mclickListener = (CardView) itemView.findViewById(R.id.recyclerviewlayout);
}
我尝试添加带有 toast 消息的 setOnClickListener 以在用户单击项目时显示消息;它显示了消息,但是当我尝试使用意图打开另一个活动时,应用程序不断崩溃。
我没有使用模拟器来运行此应用程序,因此我无法获得导致应用程序崩溃的确切错误消息。
解决方案
Intent.FLAG_ACTIVITY_NEW_TASK
如果从回收站视图打开活动,您应该添加请检查此代码
@Override
public void onBindViewHolder(@NonNull final newsAdapter.viewHolder viewHolder, int i) {
dataModel dataModel = mDataModel.get(i);
viewHolder.mTextView.setText(dataModel.getTitle());
viewHolder.mTextDescrip.setText(dataModel.getDescrip());
Glide.with(context).load(dataModel.getImage()).into(viewHolder.mImageView);
viewHolder.mclickListener.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent newsIntent=new Intent(context, newsActivity.class);
newsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newsIntent);
}
});
}
public viewHolder(@NonNull View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.layout_text);
mImageView = itemView.findViewById(R.id.layout_image);
mTextDescrip = itemView.findViewById(R.id.layout_descrip);
mclickListener = (CardView) itemView.findViewById(R.id.recyclerviewlayout);
}
推荐阅读
- git - docker run 通过别名运行时的行为不同,然后 docker run
- api - 我们能否根据时间跟踪用户、组、ChatMessage 或 Planner 对象上的 Microsoft Delta 更改。“/我/计划者/所有/三角洲”
- css - 覆盖 Bootstrap CSS(链接颜色)
- android - Android SQLite rawquery 不适用于在 sqlite3 命令行和 dbeaver 中工作的查询
- c++ - C ++中变量的限定符
- sql - 条件下子查询的外连接不起作用
- python - 修改 xpath 表达式以获得正确的 etree.getpath() 结果
- r - plot_ly mesh3d 颜色无法正常工作
- sql - 我如何将它与子字符串分开?
- css - 在 FileZilla 中使用带有变量自定义的 Bulma