【发布时间】:2018-11-20 13:02:37
【问题描述】:
我有一个带有片段的活动...在这个片段中,我在 EditText 中使用双向 DataBinging。此 EditText 绑定到对象的 Double 属性,因此,我必须实现一个 InverseMethod 来转换 String -> Double 和 Double -> String...
在我的 EditText 中,我配置了 android:selectAllOnFocus="true",并且我也在片段的 onCreateView 方法上强制它:edQtd.selectAll()
问题是,当片段出现时,EditText 有焦点,但没有选择文本,而是光标在第一个数字之前...
我希望它显示所有选定的文本...
尝试不使用inverse的方法,只是连接一个空的String,但是结果是一样的……
从我看到的调试来看,生成的绑定类在片段创建后设置文本(在我手动调用 edQtd.selectAll() 之后),删除选择...
有什么办法解决吗?
编辑: 现在我解决了它添加一个 TextChangedListener 到 EditText,我只在第一次更改文本时选择所有文本:
edQuantidade.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if(selectAllEdQtdText) {
edQuantidade.selectAll();
setSelectAllEdQtdText(false);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
【问题讨论】:
-
你在 Fragment 的 onResume() 中尝试过
edQtd.selectAll()吗? -
现在试过了,Khemraj,但没有成功。生成的绑定类的代码在 OnResume 方法之后运行...我通过添加一个 TextChangedListener 来解决它,它只在第一次更改后选择所有文本,但我不喜欢这个解决方案...
-
您只想在视图打开后选择 EditText 文本?
-
是的,我想在打开视图后立即选择 EditText 的所有文本
标签: android data-binding android-edittext selectall two-way-binding