Я не получаю данные из другой деятельности - PullRequest
0 голосов
/ 19 ноября 2018

У меня проблема с моим проектом в Android Studio.То, что я пытаюсь сделать, это когда я нажимаю кнопку (что открывает другое действие), и в этом действии я пишу данные от человека.Затем я сохраняю эти данные, и приложение возвращается к основному.Следующая кнопка создает тост, который показывает данные от человека, но тост возвращает мне ноль.Я не знаю, что я делаю неправильно.

   public class PrincipalActivity extends AppCompatActivity implements View.OnClickListener {

    Button btnObreActivitat1, btnToastDadesPersona;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);

        btnObreActivitat1 = findViewById(R.id.btnObreActivitat1);
        btnObreActivitat1.setOnClickListener(this);
        btnToastDadesPersona = findViewById(R.id.btnToastDadesPersona);
        btnToastDadesPersona.setOnClickListener(this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if (resultCode == RESULT_CANCELED) {
            Toast.makeText(this, "Resposta invalida", Toast.LENGTH_SHORT);
        } else {
            switch (requestCode) {
                case 5:
                    setTitle(data.getStringExtra("RESPOSTA"));
                    break;
            }
        }
    }

    @Override
    public void onClick(View v) {
        Intent intencio;
        StringBuilder sbUri = new StringBuilder();

        switch (v.getId()){
            case R.id.btnObreActivitat1:
                intencio = new Intent(this,Activitat1.class);
                startActivityForResult(intencio,5);
                break;
            case R.id.btnToastDadesPersona:
                intencio = getIntent();
                String nom = intencio.getStringExtra("NOM");
                String cognom = intencio.getStringExtra("COGNOM");
                String sexe = intencio.getStringExtra("SEXE");

                Toast torrada = new Toast(this);
                LayoutInflater inflador = getLayoutInflater();
                View vista = inflador.inflate(R.layout.torrada,null);
                TextView tvMissatge = vista.findViewById(R.id.tvMissatge);
                tvMissatge.setText("Nom: " + nom + "\nCognom: " + cognom +  "\nSexe: " + sexe);

                torrada.setView(vista);
                torrada.setDuration(Toast.LENGTH_SHORT);
                torrada.show();
                break;
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
    }
    @Override
    protected void onResume(){
        super.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
    }
    @Override
    protected void onStop() {
        super.onStop();
    }
}

// Следующее действие, где я пишу данные:

 public class Activitat1 extends AppCompatActivity {
    final static String nom = "NOM";
    final static String cognom = "COGNOM";
    final static String sexe = "SEXE";

    Button btnEnviar, btnCancelar;
    EditText etNom, etCognom;
    RadioButton rbtSexe;
    RadioGroup rgpSexe;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_activitat1);

        etNom = findViewById(R.id.etNom);
        etCognom = findViewById(R.id.etCognom);
        btnEnviar = findViewById(R.id.btnEnviar);
        btnCancelar = findViewById(R.id.btnCancelar);

        rgpSexe = findViewById(R.id.rgpSexe);
        rbtSexe = findViewById(rgpSexe.getCheckedRadioButtonId());
        btnEnviar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intencio = Activitat1.this.getIntent();
                intencio.putExtra(nom, etNom.getText().toString());
                intencio.putExtra(cognom, etCognom.getText().toString());
                intencio.putExtra(sexe,rbtSexe.getText().toString());
                startActivity(intencio);
            }
        });

        btnCancelar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setResult(RESULT_CANCELED);
                finish();
            }

        });
    }
}

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

в btnEnviar.setOnClickListener() вы создаете новый экземпляр startActivity(intencio); вместо возврата к родительскому действию setResult(RESULT_OK, intencio);finish();.

попробуйте это

 btnEnviar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intencio = Activitat1.this.getIntent();
            intencio.putExtra(nom, etNom.getText().toString());
            intencio.putExtra(cognom, etCognom.getText().toString());
            intencio.putExtra(sexe,rbtSexe.getText().toString());
            setResult(RESULT_OK, intencio);
            finish();        }
    });
0 голосов
/ 19 ноября 2018

Чтобы отправить назад данные о людях, которые вы только что написали после завершения Activitat1, вам нужно вызвать setResult, передать намерение, а затем вызвать финиш.Пожалуйста, посмотрите на этот ответ, чтобы узнать, как это сделать: https://stackoverflow.com/a/947560/3342108

...