如何在RecyclerView条目点击事件中添加分享按钮及闪退问题解决
问题原因
- 你初始化Adapter时传入的是
getApplicationContext(),ApplicationContext不属于Activity上下文,不具备直接启动界面的常规能力 - 你只给原始的
sharing意图加了FLAG_ACTIVITY_NEW_TASK,但Intent.createChooser()会生成一个新的Intent实例,这个新实例没有携带你设置的flag,所以系统仍然触发报错
修复方案
有两种可选,推荐第一种:
方案1(推荐):修改Adapter传入的上下文
在MainActivity中初始化Adapter的位置,把getApplicationContext()替换为MainActivity.this:
// 原来的错误写法 adapter = new Adapter(getApplicationContext(), arrayList); recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); // 修改为 adapter = new Adapter(MainActivity.this, arrayList); recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));
修改后可以删掉Adapter点击事件里的sharing.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);这行代码,因为Activity上下文启动分享不需要额外加这个flag。
方案2:给选择器意图也添加flag
如果你一定要保留传入ApplicationContext的写法,就把Adapter里启动Activity的代码改成如下:
Intent chooser = Intent.createChooser(sharing, "Share using"); chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(chooser);
内容的提问来源于stack exchange,提问作者archit kumar
相关产品推荐
相关产品推荐

