String, введенный посредством EditText исчезает, выйдя из Активности

Я делаю приложение, в котором ты нажимаешь на кнопку, он открывает один AlertDialog и ты входишь в один EditText текст, который будет введен в компьютер в той же кнопке, в которой на него нажали.

До сих пор все добро, проблема состоит, в том, что выйдя из Активности и вновь войдя, текст, который я ввел в компьютер в кнопке, не появляется, исчезла.

Я хотел бы знать, как поддерживать String, который вмешался.

Это мой код:

    package thirdline.schooltools;

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.EditText;
    import android.widget.Button;
    import android.widget.TextView;


    public class FirstTrimesterActivity extends Activity {
    Button buttonsubject1;
    EditText edittextsubject1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first_trimester);


    buttonsubject1=(Button)findViewById(R.id.buttonsubject1);

    buttonsubject1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            AlertDialog.Builder builder= new AlertDialog.Builder(FirstTrimesterActivity.this);

            builder.setTitle("Subject:");

            final EditText edittextsubject1=new EditText(FirstTrimesterActivity.this);

            builder.setView(edittextsubject1);


                    builder.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            buttonsubject1.setText(edittextsubject1.getText().toString());
                        }
                    });
                    builder.setNegativeButton("Cancel",null);



            AlertDialog alert = builder.create();
            alert.show();
        }





    });


   }
 }
2
задан 14.04.2017, 11:02
2 ответа

Текст удаляет, потому что он не хранится нигде, Он использует SharedPreferences

Mediante getSharedPreferences () ты мог бы сохранять стоимость внутри твоего EditText, используя следующие методы:

private String PREFS_KEY = "mispreferencias";

public void saveValuePreference(Context context, String text) {
    SharedPreferences settings = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
    SharedPreferences.Editor editor;
    editor = settings.edit();
    editor.putString("valorEditText", text);
    editor.commit();
}



public String getValuePreference(Context context) {
    SharedPreferences preferences = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
    return  preferences.getString("valorEditText", "");
}

, приняв твой Диалог, podr¦-схвати сохранять стоимость:

 builder.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            buttonsubject1.setText(edittextsubject1.getText().toString());

                       //GUARDA VALOR EN PREFERENCIA.
                       saveValuePreference(getApplicationContext(), edittextsubject1.getText().toString());


                        }
                    });
                    builder.setNegativeButton("Cancel",null);

и загрузив снова твой EditText, получив это от предпочтений:

...
final EditText edittextsubject1=new EditText(FirstTrimesterActivity.this);
//OBTIENE VALOR EN PREFERENCIA Y SE AGREGA AL EDITTEXT.
edittextsubject1.setText(getValuePreference(getApplicationContext());
...
...
1
ответ дан 24.11.2019, 12:14

Предполагается, что, когда ты выходишь из activity, эта разрушается, и когда ты возвращаешься, activity вооружи вид полностью denuevo, поэтому дело в том, что исчезает твой текст, который ты ввел в компьютер.

, Чтобы завершать ответ @Elanasys, в событии onCreate() тебя activity ты должен называть Ваши SharedPreferences и ищет текст, что ты ввел

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first_trimester);


    buttonsubject1=(Button)findViewById(R.id.buttonsubject1);

    //Si es distinto de vacio, quiere decir que ya habia una antes se le da el texto al boton
    if(this.getValuePreference(this) != ""){
        buttonsubject1.setText(getValuePreference(this));
    }
    ....
}

private String PREFS_KEY = "mispreferencias";

public void saveValuePreference(Context context, String text) {
    SharedPreferences settings = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
    SharedPreferences.Editor editor;
    editor = settings.edit();
    editor.putString("valorEditText", text);
    editor.commit();
}



public String getValuePreference(Context context) {
    SharedPreferences preferences = context.getSharedPreferences(PREFS_KEY, MODE_PRIVATE);
    return preferences.getString("valorEditText", "");
}
в компьютер
1
ответ дан 24.11.2019, 12:14