Android意图失败

Android意图失败,android,android-intent,Android,Android Intent,我正在用一个小表单制作一个应用程序,点击它可以改变活动 在第二个活动中,您应该看到输入的数据,当您单击按钮时,返回相同的数据,以便对其进行编辑 该应用程序可以很好地将数据发送到第二个活动 但当返回编辑数据时,添加返回应用程序的意图并不起作用 主要活动 package com.niccode.desarrollounaapp; import android.content.Intent; import android.os.Bundle; import android.view.View; im

我正在用一个小表单制作一个应用程序,点击它可以改变活动

在第二个活动中,您应该看到输入的数据,当您单击按钮时,返回相同的数据,以便对其进行编辑

该应用程序可以很好地将数据发送到第二个活动

但当返回编辑数据时,添加返回应用程序的意图并不起作用

主要活动

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);
    }
}

字符串文件

<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>

德沙洛纳酒店
名词复数
特莱福诺酒店
电子邮件
描述联系人
西吉恩特
纳西门托酒店
达托斯确认酒店
名称
日期
电传
电子邮件
描述
伊迪塔达托斯
日期:
电话:
电邮:
描述:
名义
德国福查
电传
电子邮件
描述

试试这个。在
main活动中
定义
SECOND\u活动
变量如下

Public class MainActivity extends AppCompatActivity {
private static final int SECOND_ACTIVITY = 0;
从中更新以下行

Intent regresar = new Intent (Confirmar_Datos.this, MainActivity.class);

更换
startActivity(regresar)带有

startActivityForResult(regresar, SECOND_ACTIVITY);
Intent regresar = new Intent()
setResult(Activity.RESULT_OK,regresar);
finish();
在第二个活动中,replace
Intent regresar=新的Intent(Confirmar_Datos.this,MainActivity.class)带有

startActivityForResult(regresar, SECOND_ACTIVITY);
Intent regresar = new Intent()
setResult(Activity.RESULT_OK,regresar);
finish();
同时更换
startActivity(regresar)带有

startActivityForResult(regresar, SECOND_ACTIVITY);
Intent regresar = new Intent()
setResult(Activity.RESULT_OK,regresar);
finish();
在第一个活动中,数据将在ActivityResult上显示

@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
有关更多详细信息,请查看以下链接


参考资料:


您看过使用
startactivityforresult()
onactivityresult()
API吗