2017-08-26 73 views
0

步骤如下: 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"); 
} 
} 
+0

你添加任何标志到活动中的manifest.xml? –

+0

不,我在AndroidStudio中创建了一个空的Activity,xml布局只包含此EditText,没有任何附加属性(只有id,布局宽度和布局高度) – jreft56

+0

我在询问Manifest.xml,而不是布局文件 –

回答

2

尝试添加下列到XML布局你的EditText规格:

android:saveEnabled="false" 
+0

这个工作正常!谢谢 – jreft56

0

在清单文件中为该活动添加configChanges约束。

+0

你的意思是android:configChanges =“orientation”?没有区别 – jreft56

+0

是的。添加定位|屏幕尺寸 –

0

添加在您的manifest.xml文件为Activity

 <activity 
     android:name=".SignUpActivity" 
     android:configChanges="orientation|screenSize|keyboardHidden"  
     android:label="@string/app_name" 
     /> 
2

您必须手动这么做使用保存的实例状态。这不是关于保存你好。这是一个非常常见的用例。假设用户键入某个内容,然后旋转手机。如果由于任何原因文本消失,用户必须输入所有内容。所以你必须把文本保存在某个地方。

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状态。

+0

这是唯一的答案这里的地址真正的问题。所有涉及到configChanges的其他答案只是告诉你通过不允许视图旋转来避免这个问题。只要学习如何恢复这个答案中提到的状态,你会好得多。 –

-1

EditText是在设备方向变化执着,你需要使用TextView代替

+0

没有帮助。TextView不是EditText的替代品。如果您使用EditText,则可能希望能够编辑文本。这里的答案是恢复EditText的状态。见阿曼的答案的开始。 –