アクティビティとフラグメントで構造化されたシンプルなアプリを開発しています。これは、アクセス可能にするための要件の 1 つであるため、すべてのコンテンツの説明、ナビゲーション、フォーカスなどを行いました。
そして、フラグメントを除いて、それはうまく機能します。フラグメントをロードするアクティビティがある場合、トークバックはそのコンテンツを読み取り、ユーザーは何かをクリックし、スタックの上に追加できる詳細フラグメントをクリックします。
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 Hierarchy を作成し、破棄されたフラグメントの痕跡はありませんが、トークバックはそれをナビゲートします:(
ありがとう、誰かがこの問題に光を当ててくれることを願っています:)
よろしく。