Reputation: 79
I am making an app with a small form, where clicking will change the activity
In the second activity you should see the data entered and when you click on the button return the same data, so that they are edited
The app works well in sending the data to the second activity
but when returning to edit the data, adding the intent to return the app does not work
Main Activity
package com.niccode.desarrollounaapp;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button Siguiente = (Button) findViewById(R.id.Siguiente);
final EditText etName = (EditText) findViewById(R.id.tiNombreCompleto);
final EditText etFecha = (EditText)findViewById(R.id.Calendario);
final EditText etTelefono = (EditText)findViewById(R.id.tiTelefono);
final EditText etEmail = (EditText)findViewById(R.id.tiEmail);
final EditText etDescripcion = (EditText) findViewById(R.id.tiDescripcionContacto);
MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
builder.setTitleText(getResources().getString(R.string.date1));
final MaterialDatePicker<Long> materialDatePicker = builder.build();
etFecha.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
materialDatePicker.show(getSupportFragmentManager(), "DATE_PICKER");
}
});
materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
@Override
public void onPositiveButtonClick(Object selection) {
etFecha.setText(materialDatePicker.getHeaderText());
}
});
Siguiente.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, Confirmar_Datos.class);
intent.putExtra(getResources().getString(R.string.pname), etName.getText().toString());
intent.putExtra(getResources().getString(R.string.pdate), etFecha.getText().toString());
intent.putExtra(getResources().getString(R.string.ptelefono), etTelefono.getText().toString());
intent.putExtra(getResources().getString(R.string.pemail), etEmail.getText().toString());
intent.putExtra(getResources().getString(R.string.pDescripcion), etDescripcion.getText().toString());
startActivity(intent);
finish();
}
});
Bundle para_back = getIntent().getExtras();
assert para_back != null;
final String nombre_return = para_back.getString(getResources().getString(R.string.rtname));
final String fecha_return = para_back.getString(getResources().getString(R.string.rtdate));
final String telefono_return = para_back.getString(getResources().getString(R.string.rtelefono));
final String email_return = para_back.getString(getResources().getString(R.string.rtemail));
final String descripcion_return = para_back.getString(getResources().getString(R.string.rtDescripcion));
etName.setText(nombre_return);
etFecha.setText(fecha_return);
etTelefono.setText(telefono_return);
etEmail.setText(email_return);
etDescripcion.setText(descripcion_return);
}
}
Second Layout
package com.niccode.desarrollounaapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Confirmar_Datos extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.confirmar_datos);
Button Regresar = (Button) findViewById(R.id.regresar);
Bundle parametros = getIntent().getExtras();
assert parametros != null;
final String str_nombre = parametros.getString(getResources().getString(R.string.pname));
final String str_fecha = parametros.getString(getResources().getString(R.string.pdate));
final String str_telefono = parametros.getString(getResources().getString(R.string.ptelefono));
final String str_email = parametros.getString(getResources().getString(R.string.pemail));
final String str_descripcion = parametros.getString(getResources().getString(R.string.pDescripcion));
final TextView tvnombre = findViewById(R.id.Nombre_Completo_Confirmado);
final TextView tvfecha = findViewById(R.id.fecha_de_nacimiento_Confirmado);
final TextView tvTelefono = findViewById(R.id.tel_Confirmado);
final TextView tvEmail = findViewById(R.id.mail_Confirmado);
final TextView tvDescripcion = findViewById(R.id.Descripcion_Confirmado);
tvnombre.setText(str_nombre);
tvfecha.setText(str_fecha);
tvTelefono.setText( str_telefono);
tvEmail.setText(str_email);
tvDescripcion.setText(str_descripcion);
Regresar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent regresar = new Intent (Confirmar_Datos.this, MainActivity.class);
regresar.putExtra(getResources().getString(R.string.rtname) , str_nombre);
regresar.putExtra(getResources().getString(R.string.rtdate), str_fecha);
regresar.putExtra(getResources().getString(R.string.rtelefono), str_telefono);
regresar.putExtra(getResources().getString(R.string.rtemail), str_email);
regresar.putExtra(getResources().getString(R.string.rtDescripcion), str_descripcion);
startActivity(regresar);
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
Intent intent = new Intent(Confirmar_Datos.this, MainActivity.class);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
}
String File
<resources>
<string name="app_name">DesarrolloUnaApp</string>
<string name="nombre_completo">Nombre Completo</string>
<string name="telefono">Teléfono</string>
<string name="email"> Email</string>
<string name="descripcion_contacto">Descripción del Contacto</string>
<string name="siguiente">Siguiente</string>
<string name="date1">Fecha de Nacimiento</string>
<string name="confirmar">Confirmar Datos</string>
<string name="pname">Name</string>
<string name="pdate">Date</string>
<string name="ptelefono">Telefono</string>
<string name="pemail">Email</string>
<string name="pDescripcion">Descripcion</string>
<string name="editar_datos">Editar Datos</string>
<string name="tvdate">Date : </string>
<string name="tvtelefono">Telefono : </string>
<string name="tvemail">Email : </string>
<string name="tvDescripcion">Descripcion : </string>
<string name="rtname">Nombre</string>
<string name="rtdate">Fecha</string>
<string name="rtelefono">Telefono</string>
<string name="rtemail">Email</string>
<string name="rtDescripcion">Descripcion</string>
</resources>
Upvotes: 1
Views: 215
Reputation: 1976
Try this out. In the MainActivity
define SECOND_ACTIVITY
variable as below
Public class MainActivity extends AppCompatActivity {
private static final int SECOND_ACTIVITY = 0;
Update the following line from
Intent regresar = new Intent (Confirmar_Datos.this, MainActivity.class);
to
Intent regresar = new Intent (this, Confirmar_Datos.class);
Replace startActivity(regresar);
with
startActivityForResult(regresar, SECOND_ACTIVITY);
In the second activity replace Intent regresar = new Intent (Confirmar_Datos.this, MainActivity.class);
with
Intent regresar = new Intent()
Also replace startActivity(regresar);
with
setResult(Activity.RESULT_OK,regresar);
finish();
On the first activity the data will be onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent return_data) {
super.onActivityResult(requestCode, resultCode, return_data);
if (requestCode == SECOND_ACTIVITY) {
if(resultCode == Activity.RESULT_OK){
String result=return_data.getStringExtra("key"); // This from regresar.putExtra
}
}
}//onActivityResult
For additional details review the links below.
Reference:
Upvotes: 1