gpt4 book ai didi

Android 通过点击 ActionBar 按钮触发自定义辅助功能事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:07 24 4
gpt4 key购买 nike

我正在尝试使用 AccessibilityManager 和 TalkBack 触发自定义 AccessibilityEvent

该事件的用例是当用户单击操作栏时, fragment 轮询对象列表,然后根据列表的大小调整其 AccessibilityEvent 内容。

当我尝试运行它时,我没有收到预期的 TalkBack 消息。我很确定我遗漏了一些关于实例化 AccessibilityEvent 的基本知识。

我也不确定我是否需要在此处使用或如何应用 AccessibilityDelegate,因为回调来自 MenuItem 而不是 View 。我知道我可以调用 findViewById 来获取此 MenuItem 的 View ,但我对这些 API 不是很了解。

任何关于这两点的指导都会很棒!

所讨论的问题基本上由以下伪代码描述:

public class MyFragment extends Fragment {

//...

private List<Pojo> mPojoList;

//...

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.the_id_for_my_menuitem) {
if (booleanCheck() && !mPojoList.isEmpty()) {

//create the Accessibility event
final AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_CLICKED);
event.setContentDescription(String.format("deleting %2d pojos", mPojoList.size()));

//Send a custom accessibility event to let the user know that we're deleting X objects.
final AccessibilityManager mgr = (AccessibilityManager) this.getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);

//PROBLEM: We're not seeing this event come through in TalkBack.
mgr.sendAccessibilityEvent(event);

//Delete the objects.
myDeleteObjectsFunction();
}
}
}}

最佳答案

尝试使用 View 对象触发辅助功能事件。

AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_CLICKED);
event.setContentDescription(String.format("deleting %2d pojos", mPojoList.size()));

View view = getActivity().findViewById(R.id.child_view);

ViewParent parent = view.getParent();
if (parent != null) {
parent.requestSendAccessibilityEvent(view, event);
}

关于Android 通过点击 ActionBar 按钮触发自定义辅助功能事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com