Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 先前的文本焦点问题_Android_Android Fragments_Fragment Backstack - Fatal编程技术网

Android 先前的文本焦点问题

Android 先前的文本焦点问题,android,android-fragments,fragment-backstack,Android,Android Fragments,Fragment Backstack,我正在使用多个片段。 我在片段上添加片段,如下所示 supportfragmentmanager .beginTransaction() .add(R.id.container_login, newFragment, newFragment.javaClass.simpleName) .addToBackStack(newFragment.javaClass.simpleName) .commitAl

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

supportfragmentmanager
            .beginTransaction()
            .add(R.id.container_login, newFragment, newFragment.javaClass.simpleName)
            .addToBackStack(newFragment.javaClass.simpleName)
            .commitAllowingStateLoss()
现在的问题是,尽管添加了新片段,但之前的片段并没有失去焦点。 在上一个片段EdditText中键入当前片段类型的edittext

即使是“下一个动作”也会在当前片段中失去焦点,并在上一个片段中移动光标


请提供帮助。

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

如果您想在一个容器中添加一个片段是不可能的,但是如果您想用另一个片段替换该片段,则可以这样做,因为一个布局用于一个片段,而不是多个片段,因此,您只需要用另一个片段替换前面的片段

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

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

fun openFragment(fragment: Fragment?) {
    val transaction: FragmentTransaction = supportFragmentManager.beginTransaction()
    transaction.replace(R.id.container_content, fragment!!)
    transaction.commit()
}
如果您想用另一个片段替换该片段,只需调用如下方法
openFragment(FragmentClass.newinstance())
soo将用新片段替换上一个片段


我希望这段代码能帮助您解决问题

在新片段的根布局中添加
android:focusable=true
android:clicable=true