5.5. Передача информации между Activity

5.5. Передача информации между Activity

Если необходимо передавать параметры между Activity, тогда можно использовать функцию putExtra объекта Intent, который принимает два параметра: ключ и значение, затем запускаемое Activity может получить и использовать переданные таким путём параметры.

Для проверки вышесказанного, создайте проект и добавьте в него ещё одно Activity (правый клик на папку java -> New -> Activity -> Empty Activity), второе Activity назовите Main2Activity. 

Замените код в файле res/layout/activity_main.xml на этот:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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">
    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Open Second Activity" />
</LinearLayout>

Код файла res/layout/activity_main2.xml замените на этот:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".Main2Activity"
    android:orientation="vertical">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Second Activity"
        android:id="@+id/foam">
    </TextView>
</LinearLayout>

Затем в файле MainActivity.java внутри функции onCreate после строки setContentView(); напишите следующий код:

Button button=findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent I = new Intent(MainActivity.this, Main2Activity.class);
        // Добавление передаваемого значения путём указания ключа и значения в качестве ключей используются строки, а в качестве значений могут быть использованы объекты любых типов
        I.putExtra("key","Android is cool");
        // Запуск второго Activity (окна) передав объект Intent
        startActivity(I);
    }
});

В файле Main2Activity.java после setContentView(); напишите этот код:

TextView text = findViewById(R.id.foam);
// Получение значения переданного через объект класса Intent класса Activity
text.setText(getIntent().getStringExtra("key"));