相关疑难解决方法(0)

add(),replace()和addToBackStack()之间的区别

调用这些方法的主要区别是什么:

fragmentTransaction.addToBackStack(name);
fragmentTransaction.replace(containerViewId, fragment, tag);
fragmentTransaction.add(containerViewId, fragment, tag);
Run Code Online (Sandbox Code Playgroud)

替换已存在的片段,将片段添加到活动状态,并向后台堆栈添加活动是什么意思?

其次,有findFragmentByTag(),这是否搜索由add()/ replace()方法或addToBackStack()方法添加的标记?

android android-fragments

277
推荐指数
7
解决办法
14万
查看次数

使用TalkBack时,当TextView的内容发生变化时,提醒用户的首选方法是什么?

我有一个解锁屏幕,提示用户输入一个四位数的引脚.如果用户输入的引脚不正确,TextView则会显示先前不可见的错误消息.此时,TalkBack可以大声读出错误消息的内容.

通过一些实验,我意识到我可以设置android:focusableInTouchMode="true"视图并以编程方式调用View#requestFocus().这是第一次工作,但由于视图已经具有焦点,因此后续错误失败.通常,覆盖当前视图焦点似乎也是一个坏主意.

然后我尝试View#announceForAccessibility(java.lang.CharSequence)在显示错误消息时调用.显然,如果视图当前不可见,此方法将无声地失败.没问题,否则它完美无缺.但是,它仅适用于API级别16+(Jelly Bean),它确实限制了它的实用性.由于TalkBack支持API级别7以上,因此必须有更好的解决方案.

我已经看过关于可访问性的2011和2012年Google I/O会议,但似乎都没有涵盖这个基本用例.最好的方法是什么?

编辑1: TLDR; 有没有办法强制 TalkBack在引入View#announceForAccessibility(java.lang.CharSequence)Jelly Bean 之前大声读出一些文本?

android accessibility talkback

8
推荐指数
2
解决办法
6745
查看次数

辅助功能焦点仍然位于上一个片段上的按钮上

我有一个带有两个片段的简单测试应用程序。第一个片段有一个添加第二个片段的按钮。打开 TalkBack 后,我点击第一个片段上的按钮将其选中,它会出现绿色轮廓。然后,我双击它,它会打开第二个片段,但第一个片段上按钮的绿色轮廓仍然存在。而且,由于第一个片段上的按钮仍然具有焦点,因此我无法通过滑动将焦点移动到第二个片段上的任何内容。

android accessibility android-fragments

5
推荐指数
0
解决办法
1262
查看次数