Tus*_*kar 25 android android-edittext
我有3个屏幕状态的片段; 添加,编辑和查看.在Add中,我创建一个实体并保存它.下次我在View模式下打开它并使用设置实体名称
EditText entityName = (EditText) view.findViewById(R.id.entityName);
entityName.setText(entity.getEntityname());
Run Code Online (Sandbox Code Playgroud)
我从"查看"模式中单击"编辑"按钮以打开"编辑"模式.我在这里更改实体名称并保存.这让我回到了视图屏幕.但我发现实体名称没有更新.我调试,发现它entity.getEntityname() 具有正确的价值.我不确定编辑文本为什么不采用新值.
有任何想法吗?
注意:我使用的是Android 2.2版
Tus*_*kar 84
EditText似乎在重置文本时遇到问题onCreateView.所以这里的解决方案是重置文本onResume.这有效.
在onActivityCreated中也存在问题.我在onStart中重置edittext的内容并且它可以工作.[积分给@savepopulation]
Dav*_*vid 10
Android中有一些View类应该在分离容器时保存它们的状态.应在View.onSaveInstanceState()之前调用Fragment.onViewCreated().因此,如果您在方法Fragment.onViewCreated()中设置一个值.应在View.onRestoreInstanceState(Parcelable状态)方法中清除该值.
例如,类TextView,RecyclerView等.您可以读取TextView.java的代码:
public Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
// Save state if we are forced to
final boolean freezesText = getFreezesText();
boolean hasSelection = false;
int start = -1;
int end = -1;
....
if (freezesText || hasSelection) {
SavedState ss = new SavedState(superState);
....
}
....
}
Run Code Online (Sandbox Code Playgroud)
有控制是否保存状态的参数:"freezesText"和"hasSelection".无法选择TextView,因此hasSelection为false.函数getFreezesText(),在TextView类中也返回false.因此,TextView不会保存状态.EditText.java的代码:
@Override
public boolean getFreezesText() {
return true;
}
Run Code Online (Sandbox Code Playgroud)
EditText返回true,因此EditText应该保存状态.
有一些方法来解决这个bug:
1.Implement EditText.getFreezesText()并返回false,并清除EditText中的select状态
2.实现EditText的onSaveInstanceState,返回null.如下:
public Parcelable onSaveInstanceState() {
super.onSaveInstanceState();
return null;
}
Run Code Online (Sandbox Code Playgroud)
3.使用EditText.setSaveEnable(false);
4.add param in xml"saveEnable ='false'"
| 归档时间: |
|
| 查看次数: |
19675 次 |
| 最近记录: |