*请帮助**
我试图在我的应用程序中显示SharedPreferences,但是当我打开应用程序时数据删除,并且我将按钮再次显示。 我有一个保存数据的按钮和其他显示数据的按钮,我试图将按钮降级为"显示数据"并自动显示
这是代码
public void savePreference(View view)
{
SharedPreferences myPreference = getSharedPreferences("MyDate",Context.MODE_ENABLE_WRITE_AHEAD_LOGGING);
SharedPreferences.Editor editor = myPreference.edit();
EditText editNombre = (EditText) findViewById(R.id.editnombre);
EditText editApellido = (EditText) findViewById(R.id.editapellido);
EditText editCorreo = (EditText) findViewById(R.id.editcorreo);
EditText editnick = (EditText) findViewById(R.id.editnick);
String nombre = editNombre.getText().toString();
String apellido = editApellido.getText().toString();
String correo = editCorreo.getText().toString();
String nickname = editnick.getText().toString();
editor.putString("nombre",nombre);
editor.putString("apellido",apellido);
editor.putString("correo",correo);
editor.putString("nickname",nickname);
editor.apply();
Toast.makeText(edit_profile_activity.this,"Se han agregado datos correctamente",Toast.LENGTH_SHORT).show();
}
public void showPreference (View view)
{
SharedPreferences showmypreference = getSharedPreferences("MyDate",Context.MODE_ENABLE_WRITE_AHEAD_LOGGING);
String nombre = showmypreference.getString("nombre","No existe");
String apellido = showmypreference.getString("apellido","No existe");
String correo = showmypreference.getString("correo","No existe");
String nickname = showmypreference.getString("nickname","No existe");
TextView nametext = (TextView) findViewById(R.id.nametext);
TextView nick = (TextView) findViewById(R.id.nickname);
TextView email = (TextView) findViewById(R.id.editcorreo);
String preferencia = (nombre + apellido);
String shownick = (nickname);
String showemail =(correo);
nametext.setText(preferencia);
nick.setText(shownick);
email.setText(showemail);
}
答案 0 :(得分:0)
我使用您的代码创建了一个应用程序,并使用隐含的EditText和TextView对象创建了一个布局。您的代码似乎完全按照您的要求执行操作。保存首选项后,将从4个EditTexts中读取数据并保存在MyDate首选项文件中。恢复首选项后,数据将写入2个TextView(nametext和昵称)和EditTexts(editcorreo)之一。其他EditTexts将通过默认的onRestoreInstanceState恢复到其当前内容,或者将初始化为初始化时布局或onCreate放入其中的任何内容。
如果您尝试将数据恢复到EditText视图,就像应用程序退出时一样,那么您的showPreference方法应该获取对EditText视图的引用并在每个视图上调用setText方法。
EditText editNombre = (EditText) findViewById(R.id.editnombre);
EditText editApellido = (EditText) findViewById(R.id.editapellido);
EditText editCorreo = (EditText) findViewById(R.id.editcorreo);
EditText editnick = (EditText) findViewById(R.id.editnick);
editNombre.setText(nombre);
editApellido.setText(apellido);
editCorreo.setText(correo);
editnick.setText(nickname);
此外,您正在将View传递给其中每个方法,但不在任一方法中使用该参数。除非你有充分的理由离开它,否则我建议删除View视图参数。