Android Studio - Comunicazione tra Activity, passaggio di Dati e cambio di configurazione

Android Studio - Comunicazione tra Activity, passaggio di Dati e cambio di configurazione

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
>

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity 1: inizio"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.047"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.022"
/>

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:text="Nome:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
/>

<EditText
android:id="@+id/editNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Nome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
/>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:text="Cognome:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editNome"
/>

<EditText
android:id="@+id/editCognome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="7dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Cognome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2"
/>

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="8dp"
android:text="Età:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editCognome"
/>

<EditText
android:id="@+id/editEta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="7dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Età"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3"
/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginLeft="14dp"
android:layout_marginTop="8dp"
android:text="Avanti"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editEta"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

Landscape

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
>

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Activity 1: inizio"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.047"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.022"
/>

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:text="Nome:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
/>

<EditText
android:id="@+id/editNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Nome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
/>

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="8dp"
android:text="Cognome:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editNome"
/>

<EditText
android:id="@+id/editCognome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="7dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Cognome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2"
/>

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="8dp"
android:text="Età:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editCognome"
/>

<EditText
android:id="@+id/editEta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="7dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Età"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3"
/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginLeft="14dp"
android:layout_marginTop="8dp"
android:text="Avanti"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editEta"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

L’Activity che riceve i Dati e li mostra

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2"
>

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
android:text="Activity2: riceve i dati"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>

<TextView
android:id="@+id/textNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="14dp"
android:text="Nome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5"
/>

<TextView
android:id="@+id/textNomeOk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="14dp"
android:text="Nome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textNome"
/>

<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="15dp"
android:text="Cognome:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textNomeOk"
/>

<TextView
android:id="@+id/textCognome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="11dp"
android:text="Cognome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView8"
/>

<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="13dp"
android:text="eta:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textCognome"
/>

<TextView
android:id="@+id/textEta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="11dp"
android:text="eta"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView10"
/>

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="19dp"
android:text="Back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textEta"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

Landscape, versione (Orizzontale)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2"
>

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="16dp"
android:text="Activity2: riceve i dati"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>

<TextView
android:id="@+id/textNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="14dp"
android:text="Nome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5"
/>

<TextView
android:id="@+id/textNomeOk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="14dp"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textNome"
/>

<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="15dp"
android:text="Cognome:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textNomeOk"
/>

<TextView
android:id="@+id/textCognome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="11dp"
android:text="Cognome"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView8"
/>

<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="13dp"
android:text="eta:"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textCognome"
/>

<TextView
android:id="@+id/textEta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="11dp"
android:text="eta"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView10"
/>

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="17dp"
android:layout_marginLeft="17dp"
android:layout_marginTop="19dp"
android:text="Back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textEta"
/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity

package com.example.change_configuration_ok;

import androidx.annotation.NonNull;
import
androidx.annotation.Nullable;
import
androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import
android.content.SharedPreferences;
import
android.os.Bundle;
import
android.os.PersistableBundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.EditText;

public class MainActivity extends AppCompatActivity {

EditText editNome, editCognome, editEta;
Button button;

//SharedPreferences
private SharedPreferences mPref;
// contiene le preferenze, in questo caso 3
// i campi sono 2 Stringhe, nome e cognome
// e inoltre, un campo numerico, cioè l'età
private String modeString, modeString2;
private int modeInt;

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

editNome = (EditText) findViewById(R.id.editNome);
editCognome = (EditText) findViewById(R.id.editCognome);
editEta = (EditText) findViewById(R.id.editEta);
button = (Button) findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nome = editNome.getText().toString();
String cognome = editCognome.getText().toString();
int eta = Integer.parseInt(editEta.getText().toString());
// E' bene creare la chiamata --> Intent
// in questo modo, riusciamo a passare i dati all'Activity2
// ovviamente questo per definizione è un Intent Esplicito
// Noi conosciamo la Classe, La componente da richiamare --> Activity2
Intent passoiDati = new Intent(MainActivity.this, MainActivity2.class);
passoiDati.putExtra("NAME1", nome);
passoiDati.putExtra("COGNOME1", cognome);
passoiDati.putExtra("ETA1", eta);
startActivity(passoiDati);
}
});

mPref = getSharedPreferences("Mio", MODE_PRIVATE);
modeString = mPref.getString("NAME1OK", "Nome");
editNome.setText(modeString.toString());

modeString2 = mPref.getString("COGNOME1OK", "Cognome");
editCognome.setText(modeString2.toString());

modeInt = mPref.getInt("ETA1OK", 10);
editEta.setText(String.valueOf(modeInt));
}

@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor ed = mPref.edit();
ed.putString("NAME1OK", editNome.getText().toString());
ed.putString("COGNOME1OK", editCognome.getText().toString());
ed.putInt("ETA1OK", Integer.parseInt(editEta.getText().toString()));
ed.commit();
}

@Override
public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outState.putString("saveName", editNome.getText().toString());
outState.putString("saveCognome", editCognome.getText().toString());
outState.putInt("saveEta", Integer.parseInt(editEta.getText().toString()));
}

@Override
public void onRestoreInstanceState(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onRestoreInstanceState(savedInstanceState, persistentState);
editNome.setText(savedInstanceState.getString("saveName"));
editCognome.setText(savedInstanceState.getString("saveCognome"));
editEta.setText(savedInstanceState.getString("saveEta"));
}
}

MainActivity2

package com.example.change_configuration_ok;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.TextView;

public class MainActivity2 extends AppCompatActivity {

TextView textNomeOk, textCognome, textEta;
Button button2;

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

textNomeOk = (TextView) findViewById(R.id.textNomeOk);
textCognome = (TextView) findViewById(R.id.textCognome);
textEta = (TextView) findViewById(R.id.textEta);
button2 = (Button) findViewById(R.id.button2);

// Ovviamente per ricevere i Dati dall'Activity2, si usa
// getIntent()
// si assegnano in questo caso due stringhe

Intent riceviDati = getIntent();
String nome = riceviDati.getStringExtra("NAME1");
String cognome = riceviDati.getStringExtra("COGNOME1");
int eta = riceviDati.getIntExtra("ETA1", 10);

// riceveNome e riceveCognome sono due TextView
textNomeOk.setText(nome);
textCognome.setText(cognome);
textEta.setText(String.valueOf(eta));

button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent tornaIndietro = new Intent(MainActivity2.this, MainActivity.class);
startActivity(tornaIndietro);
}
});
}
}

About Post Author

pasquale.clarizio

error: Content is protected !!
Advertisment ad adsense adlogger