我有一个包含5个片段的viewpager2,最后一个片段具有Edittext 问题是,每次用户选择最后一个片段时,我都希望对我的edittext请求focus()。
我尝试过的事情:
任何对此问题的想法将不胜感激 谢谢
编辑:
对不起,我忘了提及
我的Viewpager(父级)位于其他viewpager2(子级)的最后一个片段中。所以我有viewpager2(parent),最后一个片段包含了我的viewpager2(child)。 当我选择的“子”的最后一个片段,我可以将焦点设置到的EditText。但是问题是,当我更改“父”选项卡并返回到包含“子”的最后一个片段时。我不能告诉“孩子”再次关注。
是的,简历和onpause在“父母的”片段而不是在“孩子”的片段上工作
谢谢
答案 0 :(得分:0)
您可以在活动的最后一个片段的requestFocus
方法中使用onCreateView
,也可以在活动中使用onActivityCreated
方法,尽管我从未使用过最后一个片段。
请记住,为了在EditText中requestFocus
,您需要先在触摸模式下启用可聚焦。
您可以使用以下方法通过XML进行操作:
android:focusableInTouchMode="true"
或使用Java:
editText.setFocusableInTouchMode(true);
答案 1 :(得分:0)
您可以使用最后一个片段的onResume
方法中的requestFocus,使用Viewpager2,将所有屏幕外片段的上限设为onStarted
,并在完全显示在屏幕上时恢复。
我不确定你为什么说:-
使用onresume,onattach等,当用户在片段之间进行更改时,它们都不被调用
除非您在这里不是在谈论Activity's
onResume
。
这种行为没有得到很好的记录,但是您可以在发行说明中看到其功能 https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-alpha06
FragmentStateAdapter:非主要项目片段的上限为STARTED,其menuVisibility设置为false。
和
https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-beta05
修复了更改页面时片段暂停/恢复交易的顺序的问题(我们现在总是在恢复新项目之前暂停旧的主要项目)。 (b / 139489059)
您还说:-
Setuservisisiblehint已弃用
不是Viewpager2的一部分,但原始viewpager和原始viewpager也仅恢复当前片段。