Java 设备旋转后,提示文本在EditText中变为真实文本
我有一个带有提示文本的EditText视图 当设备旋转时,提示变为真实文本 如果用户以前写过一些文本-它将被覆盖Java 设备旋转后,提示文本在EditText中变为真实文本,java,android,android-edittext,Java,Android,Android Edittext,我有一个带有提示文本的EditText视图 当设备旋转时,提示变为真实文本 如果用户以前写过一些文本-它将被覆盖 我怎样才能改变这种行为?停止将提示转换为文本?这与跨旋转保存数据有关。基本上,您的数据在轮换时被销毁 要解决此问题,您需要保存运行时配置更改(本例中为旋转)期间的数据 一种方法是覆盖活动中的onSaveInstanceState(Bundle outState) 我上面描述的方法是在onPause()onStop()和onDestroy()之前调用的 我从一本好书中读到: onSav
我怎样才能改变这种行为?停止将提示转换为文本?这与跨旋转保存数据有关。基本上,您的数据在轮换时被销毁 要解决此问题,您需要保存运行时配置更改(本例中为旋转)期间的数据 一种方法是覆盖活动中的
onSaveInstanceState(Bundle outState)
我上面描述的方法是在onPause()
onStop()
和onDestroy()之前调用的
我从一本好书中读到:
onSaveInstanceState(…)的默认实现要求所有活动的视图
将其状态另存为Bundle对象中的数据。Bundle是将字符串键映射到
某些有限类型的值
你以前见过这个包裹。它被传递到onCreate(Bundle)
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//
}
重写onCreate(…)时,调用活动的超类上的onCreate(…)并传递
在你刚收到的包裹里。在超类实现中,视图的保存状态为
已检索并用于重新创建活动的视图层次结构
这是最酷的部分
您需要重写onSavedInstanceState以将其他数据保存到捆绑包中,然后在onCreate()
方法中读取该数据
所以,无论您希望在整个旋转过程中保存什么数据,都需要将该数据添加到此捆绑包中
像这样做
添加一个常量,该常量将作为密钥存储在捆绑包中
private静态最终字符串MY_KEY=“MY KEY”代码>
然后重写onSaveInstanceState()
,以常量MY_KEY
作为键将数据的值写入捆绑包
@覆盖
SaveInstanceState上的公共无效(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putInt(我的_键,你在旋转中不断丢失的数据都在这里!!!!!);
}
最后在onCreate
中检查此值,如果存在,则将其分配给变量
if(savedInstanceState!=null){
keeplosing=savedInstanceState.getInt(MY_键,0);
}
如果您也像我一样,发布一些格式,作为答案,可能会有所帮助
我也有同样的问题。我在onCreate
中将fragment
添加到activity
中,如下所示
fragmentTransaction.add(R.id.fragment, fragment, tag);
因此,每当我旋转设备时,都会遇到与您提到的完全相同的问题,然后我进行了双重检查,发现每个旋转片段都会被添加
在我的案例中,解决方案是用replace
替换add
,如下所示。做了这件事之后,问题就解决了
fragmentTransaction.replace(R.id.toDoFragment, fragment, tag);
你能发布你的代码吗?