我想使用ShareActionProvider
在ActionBar
中提供按钮/子菜单,以共享由我应用的数据库生成的文件。将生成的文件取决于用户当前正在查看的选项卡。由于数据库中的数据可能会更改,因此在创建活动时无法生成文件,但必须在用户请求发送时创建该文件。
为此,我一直关注official Android guide。不幸的是,根据指南,
[...]如果动作提供者提供了一个动作子菜单,那么你的动作 当活动时,活动未收到
onOptionsItemSelected()
的电话 用户打开列表或选择其中一个子菜单项。
因此,似乎没有任何事情我可以听取在正确的时刻致电setShareIntent()
:
onOptionsItemSelected()
未被触发,除非ShareActionProvider
按钮被委托给溢出菜单,这完全违背了使用它的意义onMenuItemClick()
由于不明原因未被解雇onShareTargetSelected()
不能用于修改意图。设置新意图仅适用于下次选择项目时。似乎API未涵盖关键事件。如何实现我需要的功能?
答案 0 :(得分:1)
将生成的文件取决于用户当前正在查看的标签
当用户更改标签时更新Intent
。
由于数据库中的数据可能会更改,因此在创建活动时无法生成文件,但必须在用户请求发送活动时创建该文件。
如果这确实是一个文件(EXTRA_STREAM
),请使用指向您Uri
的{{1}} ContentProvider
来生成文件。
如果是" file"您的意思是仅调整EXTRA_TEXT
,在用户更改数据时执行此操作(例如TextWatcher
上的EditText
)。
虽然我同意ShareActionProvider
理想情况下会有动态"模式,当用户点击它时,它会要求您在该点Intent
。我还没有看到任何办法。