EditText上没有设置
步骤如下: 1.运行应用程序 - >确定,EditText上设置为“你好” 2.清除文本手动 3.旋转装置EditText上没有设置
我希望那是什么EditText再次设置为“hello”,因为循环后重新创建活动。但是,EditText是空的。代码:
public class MainActivity extends AppCompatActivity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText1);
editText.setText("hello");
}
}
在清单文件中为该活动添加configChanges约束。
你的意思是android:configChanges =“orientation”?没有区别 – jreft56
是的。添加定位|屏幕尺寸 –
添加在您的manifest.xml
文件为Activity
<activity
android:name=".SignUpActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/app_name"
/>
您必须手动这么做使用保存的实例状态。这不是关于保存你好。这是一个非常常见的用例。假设用户键入某个内容,然后旋转手机。如果由于任何原因文本消失,用户必须输入所有内容。所以你必须把文本保存在某个地方。
https://developer.android.com/guide/topics/resources/runtime-changes.html
所以,你必须做的是:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//Here savedStateValue is a global string
savedStateValue = //Get the Text From Edit Text here;
outState.putString("savedStateKEY", savedStateValue);
}
和的onCreate,做这样的事情:
if (savedInstanceState != null) {
//Restore the Text to EditText
editText.setText(savedInstanceState.getString("savedStateKEY"));
}
编辑 第二部分是为什么会发生。这是因为,您正在删除“Hello”文本和屏幕方向更改,它正在从初始状态传递的Bundle中还原数据。在该捆绑中,没有“你好”,因为你已经手动删除它。 所以,如果你正在使用
android:saveEnabled="false"
然后你正在安卓不保存在任何的EditText状态。
这是唯一的答案这里的地址真正的问题。所有涉及到configChanges的其他答案只是告诉你通过不允许视图旋转来避免这个问题。只要学习如何恢复这个答案中提到的状态,你会好得多。 –
EditText
是在设备方向变化执着,你需要使用TextView
代替
没有帮助。TextView不是EditText的替代品。如果您使用EditText,则可能希望能够编辑文本。这里的答案是恢复EditText的状态。见阿曼的答案的开始。 –
你添加任何标志到活动中的manifest.xml? –
不,我在AndroidStudio中创建了一个空的Activity,xml布局只包含此EditText,没有任何附加属性(只有id,布局宽度和布局高度) – jreft56
我在询问Manifest.xml,而不是布局文件 –