Android 来自不同布局的数据的持久性
我在做一个android应用程序,其中我有两个不同的布局,用于相同的活动(一个用于纵向,一个用于横向,重要的是,它们完全不同)。我的问题是它们之间数据的持久性,因为在纵向和横向之间进行更改时,数据会丢失。为了解决我的问题,我使用了onSaveInstanceState并更改清单,但它们都不适用于我的情况。我希望你能帮助我,问候 警察局。景观是在土地的目录布局Android 来自不同布局的数据的持久性,android,persistence,orientation,Android,Persistence,Orientation,我在做一个android应用程序,其中我有两个不同的布局,用于相同的活动(一个用于纵向,一个用于横向,重要的是,它们完全不同)。我的问题是它们之间数据的持久性,因为在纵向和横向之间进行更改时,数据会丢失。为了解决我的问题,我使用了onSaveInstanceState并更改清单,但它们都不适用于我的情况。我希望你能帮助我,问候 警察局。景观是在土地的目录布局 mensaje=(EditText) findViewById(R.id.EditTextAlarma); //portrait hora
mensaje=(EditText) findViewById(R.id.EditTextAlarma); //portrait
horaEdit=(EditText) findViewById(R.id.editTextHoras); //landscape
minutosEdit=(EditText) findViewById(R.id.editTextMinutos); //landscape
segundosEdit=(EditText) findViewById(R.id.editTextSegundos); //landscape
mensajeTimer=(EditText) findViewById(R.id.mensajeTimer); //landscape
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("msj",mensaje.getText().toString());
outState.putString("hora",horaEdit.getText().toString());
outState.putString("min",minutosEdit.getText().toString());
outState.putString("seg",segundosEdit.getText().toString());
outState.putString("msjT",mensajeTimer.getText().toString());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
String m=savedInstanceState.getString("msj");
String h=savedInstanceState.getString("hora");
String mn=savedInstanceState.getString("min");
String s=savedInstanceState.getString("seg");
String mt=savedInstanceState.getString("msjT");
mensaje.setText(m);
horaEdit.setText(h);
minutosEdit.setText(mn);
segundosEdit.setText(s);
mensajeTimer.setText(mt);
}
从活动中重写这两个方法
然后,当方向改变时,只需在onRestoreInstanceState中获取值,并将其设置为xml小部件
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//SAVE YOUR DATA HERE
outState.putString("key","Value");
//YOU CAN SAVE ANY TYPE OF DATA HERE AND RETRIVE
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//RETRIVE YOUR DATA HERE
String value=savedInstanceState.getString("key");
//SET VALUE TO XML HERE
Log.d("Value saved is:",value);
}
从活动中重写这两个方法
然后,当方向改变时,只需在onRestoreInstanceState中获取值,并将其设置为xml小部件
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//SAVE YOUR DATA HERE
outState.putString("key","Value");
//YOU CAN SAVE ANY TYPE OF DATA HERE AND RETRIVE
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
//RETRIVE YOUR DATA HERE
String value=savedInstanceState.getString("key");
//SET VALUE TO XML HERE
Log.d("Value saved is:",value);
}
发布您的代码以显示您如何使用onSaveInstanceState-您是否确实重新设置了savedInstanceState捆绑包中的值?是否已经编辑了post代码以显示您如何使用onSaveInstanceState-您是否确实重新设置了savedInstanceState捆绑包中的值?是否已经以什么方式编辑了postIn工作(@Pavan可能应该在onSave中的op之后执行超级调用)即,您是否看到空字符串或其他内容?当活动重新启动时,在包返回时发布包的内容ddndnt work,因为在横向视图中有3个editText在纵向视图中不存在。我想要的是,肖像信息只保留在肖像中,而在景观中也是一样。我的大麻烦是,当我调用saveInstanceState(Bundle outState)时,我尝试保存一些编辑文本,但是此布局中不存在某些EditText,并且出现以下错误Java.lang.NullPointerException:尝试在null对象上调用虚拟方法“android.text.Editable android.widget.EditText.getText()”reference@eloylopez您应该已经声明了xml文件(Po trait和横向)中的所有编辑文本具有相同的ID或标签。您只能使用纵向和横向更改视图(用户界面),但两者都应该具有具有匹配ID的小部件,否则您将得到异常。因此,您应该在两个XML文件中都包含所有5个edittext,以何种方式不起作用?(@Pavan可能应该在onSave中的op之后执行超级调用)即,您是否看到空字符串或其他内容?当活动重新启动时,在包返回时发布包的内容ddndnt work,因为在横向视图中有3个editText在纵向视图中不存在。我想要的是,肖像信息只保留在肖像中,而在景观中也是一样。我的大麻烦是,当我调用saveInstanceState(Bundle outState)时,我尝试保存一些编辑文本,但是此布局中不存在某些EditText,并且出现以下错误Java.lang.NullPointerException:尝试在null对象上调用虚拟方法“android.text.Editable android.widget.EditText.getText()”reference@eloylopez您应该已经声明了xml文件(Po trait和横向)中的所有编辑文本具有相同的ID或标签。您只能使用纵向和横向更改视图(用户界面),但两者都应该具有具有匹配ID的小部件,否则您将得到异常。因此,您应该在两个XML文件中都包含所有5个edittext