自动显示getSharedPreferences

时间:2017-02-09 17:32:14

标签: android android-studio sharedpreferences show

*请帮助**

我试图在我的应用程序中显示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);

    }

1 个答案:

答案 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视图参数。