簡體   English   中英

如何處理viewpager2中edittext的焦點

[英]How to handle focus of edittext inside viewpager2

我有一個帶有 5 個片段的 viewpager2,最后一個片段有 Edittext 問題是,每次用戶選擇最后一個片段時,我都想向我的 edittext 請求焦點()。

我試過的:

  1. 使用 registerOnPageChangeCallback(),但問題是,我不能請求關注頁面更改,因為它會導致 NPE。
  2. 使用 onresume、onattach 等,當用戶在片段之間切換時,它們都不會被調用
  3. 不推薦使用 Setuservisisiblehint

對此問題的任何想法將不勝感激謝謝

編輯:

對不起,我忘了提

我的 Viewpager(parent) 位於其他 viewpager2(child) 的最后一個片段中。 所以我有 viewpager2(parent),最后一個片段包含我的 viewpager2(child)。 當我選擇“孩子”的最后一個片段時,我可以將焦點設置為編輯文本。 但問題是當我將“父”選項卡和 go 更改回包含“子”的最后一個片段時。 我不能告訴“孩子”再次集中注意力。

是 Onresume 和 onpause 在“父”片段而不是“子”片段中工作

謝謝

您可以在最后一個片段的onCreateView方法或活動中的onActivityCreated方法中requestFocus ,盡管我從未使用過最后一個。

請記住,為了在requestFocus中請求焦點,您需要先在觸摸模式下啟用焦點。

您可以通過 XML 使用: android:focusableInTouchMode="true"或使用 Java: editText.setFocusableInTouchMode(true);

您可以在最后一個片段的onResume方法中 requestFocus,使用 Viewpager2 任何屏幕外片段都將在onStarted處設置上限,並在完全顯示在屏幕上時恢復。

我不知道你為什么說:-

使用 onresume、onattach 等,當用戶在片段之間切換時,它們都不會被調用

除非您在這里談論的是Activity's onResume

此行為沒有得到很好的記錄,但您可以在 releasenotes https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-alpha06中看到該功能

FragmentStateAdapter:非主要項 Fragments 的上限為 STARTED,並且它們的 menuVisibility 設置為 false。

https://developer.android.com/jetpack/androidx/releases/viewpager2#1.0.0-beta05

修復了更改頁面時片段暫停/恢復事務的順序(我們現在總是在恢復新的主要項目之前暫停舊的主要項目)。 (b/139489059)

你還說:-

不推薦使用 Setuservisisiblehint

這不是 Viewpager2 的一部分,但原始 viewpager 和原始 viewpager 也僅恢復當前片段。

暫無
暫無

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

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