上一个片段edittext焦点问题

Posted

技术标签:

【中文标题】上一个片段edittext焦点问题【英文标题】:Previous fragment edittext focus issue 【发布时间】:2021-03-27 19:02:00 【问题描述】:

我正在使用多个片段。 我在片段上添加片段,如下所示

supportfragmentmanager
            .beginTransaction()
            .add(R.id.container_login, newFragment, newFragment.javaClass.simpleName)
            .addToBackStack(newFragment.javaClass.simpleName)
            .commitAllowingStateLoss()

现在的问题是,尽管添加了新片段,但之前的片段并没有失去焦点。 在前一个片段编辑文本中输入当前片段类型的编辑文本。

即使下一个动作也会在当前片段中失去焦点并在前一个片段中移动光标。

请帮忙。

【问题讨论】:

在 newFragment 的根布局中添加 android:focusable=trueandroid:clicable=true 【参考方案1】:

片段不会失去焦点,因为您使用.add 方法将新片段添加到容器中已经存在的片段上。 使用.replace() 方法替换容器中的现有片段。这类似于调用 remove(Fragment) 然后使用.add() 方法。

【讨论】:

【参考方案2】:

如果你想在一个容器中添加一个片段是不可能的,但如果你想用另一个片段替换片段是可以做到的,因为一个布局是为 1 个片段,不超过一个,所以你只需要用另一个片段替换前一个片段

如果你想用新片段替换之前的片段,我有一个简单的代码

首先,你需要添加一个带有片段参数的方法

fun openFragment(fragment: Fragment?) 
    val transaction: FragmentTransaction = supportFragmentManager.beginTransaction()
    transaction.replace(R.id.container_content, fragment!!)
    transaction.commit()

如果你想用另一个片段替换片段,只需调用这样的方法openFragment(FragmentClass.newinstance()) soo 之前的片段将被新片段替换

希望这段代码可以帮助你解决问题

【讨论】:

以上是关于上一个片段edittext焦点问题的主要内容,如果未能解决你的问题,请参考以下文章

Android EditText 下一个焦点

从选项卡式片段导航时,如何避免聚焦最后一个 EditText?

EditText 请求焦点不起作用

使 EditText 不会失去焦点

软键盘仅在 EditText 焦点上显示一次

在片段替换上显示/隐藏 Android 软键盘