簡體   English   中英

如何避免 TalkBack 讀取已關閉的片段

[英]How to avoid TalkBack from reading dismissed fragment

我正在開發一個簡單的應用程序,它由活動和片段構成,這是使其可訪問的要求之一,所以我做了所有的內容描述、導航、焦點等。

它工作得很好,除了片段,如果有一個活動加載了一個片段,對講讀取其內容,然后用戶點擊一些東西和一個可以添加到堆棧頂部的細節片段。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
audios = AudiosListFragment.newInstance(params);
ft.add(R.id.audios_fragment_holder, audios);
ft.commit();

如果用戶繼續導航對講仍然記住丟失片段的每個元素的位置。

有沒有辦法清除事件的可訪問性列表並強制它再次獲取它? 可訪問性管理器似乎沒有任何方法。

AccessibilityManager manager = (AccessibilityManager) getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
    manager.getAccessibilityServiceList();

- 編輯 - 我嘗試過但沒有解決的事情。

從片段中的視圖創建發送事件。

    AccessibilityEvent event =
    AccessibilityEvent.obtain(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
    AccessibilityDelegate delegate = new AccessibilityDelegate();
    v.setAccessibilityDelegate(delegate);
    delegate.dispatchPopulateAccessibilityEvent(container, event);

中斷片段的 onResume 上的所有待處理文本。

 AccessibilityManager mgr = (AccessibilityManager)
 getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
 mgr.interrupt();

請求裝飾器視圖注冊 window_content_change 或 window_state_change 事件。

 getWindow().getDecorView()
    .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);

-- 編輯 -- 制作了一個 DumpView 層次結構,並且沒有被解散的片段的痕跡,但是對講仍然可以導航它:(

謝謝,我希望有人能對這個問題有所了解:)

問候。

https://medium.com/@guygriv/accessibility-and-fragment-transactions-1aef5596f9d4

我發現了這個,它很好地解決了問題,而無需使用替換,

此鏈接描述了 Fragment BackStage 更改,檢查添加的片段不是最后一個片段,然后將可訪問性設置為 IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS 以禁用隱藏片段可訪問性,否則對於可見的片段將可訪問性設置為 IMPORTANT_FOR_ACCESSIBILITY_YEs

我發現下面的片段不會被讀取的唯一方法是在片段事務中替換它們,這是一個缺點,因為您會丟失該片段的狀態......

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
BookDetailFragment book = BookDetailFragment.newInstance(id);
ft.replace(R.id.books_fragment_holder, book);
ft.addToBackStack(BookDetailFragment.TAG);
ft.commit();

我會繼續研究如何正確地做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM