В этом уроке я бы хотел вам показать как передавать данные с одного Activity на другое Activity.
Шаг 1
Создаем в нашей Intellij IDEA -> Android Application.
После создаем layout main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Введите ваше имя:" android:id="@+id/textView" android:layout_gravity="left|center_vertical"/> <EditText android:layout_width="167dp" android:layout_height="wrap_content" android:id="@+id/name" android:layout_gravity="left|center_vertical"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Введите вашу вамилию:" android:id="@+id/textView1" android:layout_gravity="left|center_vertical"/> <EditText android:layout_width="169dp" android:layout_height="wrap_content" android:id="@+id/lastname" android:layout_gravity="left|center_vertical"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Go to Activity" android:id="@+id/btnActTwo" android:onClick="goNewView" android:layout_gravity="left|center_vertical"/> </LinearLayout>
И так она будет выглядеть:
На этой Layout будут вводится данные и после нажатия на кнопку передаваться на другое окно.
И собственно создадим второй layout куда мы и будем передавать данные с формы.
Назовем её two.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/nametxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ваше имя:" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Ваша фамилия: " android:id="@+id/lastnametxt" android:layout_gravity="left|center_vertical"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Назад" android:onClick="back" android:id="@+id/back_button" android:layout_gravity="left|center_vertical"/> </LinearLayout>
И так она будет выглядеть после того как мы передадим туда данные.
Layout-ы мы закончили создавать переходим к Activity.
Шаг 2
Создадим теперь Activity для main.xml и назовем его MainActivity.java:
package com.devcolibri.GoActivity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private Button forward; private EditText name; private EditText lastName; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); forward = (Button) findViewById(R.id.btnActTwo); name = (EditText) findViewById(R.id.name); lastName = (EditText) findViewById(R.id.lastname); } }
и для второго layout tow.xml создаем следующий Activity, назовем его NewActivity.java:
package com.devcolibri.GoActivity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class NewActivity extends Activity { private Button back; private TextView name; private TextView lastName; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.two); back = (Button) findViewById(R.id.back_button); name = (TextView) findViewById(R.id.nametxt); lastName = (TextView) findViewById(R.id.lastnametxt); } }
Шаг 3
Intent – этот класс позволяет открывать новое Activity, запускать сервис, передавать данные между Activity.
Теперь в MainActivity добавим следующий метод, который передаст значения с формы на другое Activity после клика по кнопке:
public void goNewView(View v){ switch (v.getId()) { case R.id.btnActTwo: // Говорим между какими Activity будет происходить связь Intent intent = new Intent(this, NewActivity.class); // указываем первым параметром ключ, а второе значение // по ключу мы будем получать значение с Intent intent.putExtra("name", name.getText().toString()); intent.putExtra("lastname", lastName.getText().toString()); // показываем новое Activity startActivity(intent); break; default: break; } }
Теперь нужно вывести переданные значения на новом Activity. Для этого в NewActivity.java напишите следующий код, а именно в методе onCreate():
// Принимаем имя String txtName = getIntent().getStringExtra("name"); // Принимаем фамилию String txtLastname = getIntent().getStringExtra("lastname"); // выводим принятое имя name.setText(name.getText().toString() + " " + txtName); // Выводим принятую фамилию lastName.setText(lastName.getText().toString() + " " + txtLastname);
И последнее, что нужно сделать, добавить метод обработчика кнопки Назад в классе NewActivity.java:
public void back(View v){ switch (v.getId()) { case R.id.back_button: Intent intent = new Intent(this, MainActivity.class); startActivity(intent); break; default: break; } }
p.s. На этом все, что не понятно пишите в комментария я с радостью отвечу вам.
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
21 комментариев к статье "Передача данных с одного Activity на другое Activity"
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Спасибо за статью.
А есть какой-то аналог $_SESSION (это в php), чтобы один раз задать, и в любом activity можно было бы вытащить его значение?
Пожалуйста :)
Что именно вам нужно сделать, возможность хранить сессию?
используй SharedPreferences.
Спасибо.
все коротко и ясно. по больше бы таких примеров
Будем стараться :)
При нажатии на кнопку, приложение крашится.
Спасибо за статью! Удачи в ваших начинаниях
Спасибо)
Здравствуйте, а при создании несколько кнопок и когда каждая кнопка ведет к разным Activity, какой будет код? Точнее,я ввела аналогичный код для новой кнопки, но при запуске и при нажатии второй кнопки Activity не открывается. Ввела как новый case, в коде вроде все нормально,а при запуске не открывается.буду благодарна!
Внимательно посмотрите в Intent какой вы вктивити передаёте, возмоно вы скопировали..
Здравствуйте. У меня такая задача: есть много кнопок разново цвета нужно при нажатии в новом активити выводить название кнопки + строку, и цвет активити должен быть как цвет кнопки, с текстом я както разобралса, а как передать цвет?????….
Попробуйте так:
Определить цвет можно так:
Добрый день.Недавно начал изучать Android Studio. Для ребенка решил сделать приложение.
Столкнулся с такой проблемой:
У меня есть 2 activity, 10 background. 5 для 1- activity, 5 для второго.
На первых пяти – начало рисунка, на вторых пяти – окончание рисунка.
Задача простая: при открытии приложения установить случайный background и при нажатии кнопки открывать второй Activity и видеть окончание рисунка.
Как можно реализовать данную задачу?
Спасибо за ответ.
а как передать данные и отобразить их в уже созданном однажды Activity. А то startActivity каждый раз создает новое Activity
Посмотрите это думаю вы поймете как надо решить ваш вопрос: http://goo.gl/mYluOs
А как передать многомерный массив в другое Activity , по примерам выше он так не передается ?
как можно передать одномерный массив? если прописать intent.putExtra(“karti”,karti[]); то выдает ошибку, хотя когда я указываю номер элемента, он легко передает. подскажите, плз
Добрый день! А как передавать объекты между Активити? Допустим есть свой класс, и я хочу передать экземпляр класса.
Здравствуйте! Спасибо за столь ясные и приятные примеры.
Как передать ArrayList?
у меня есть класс contact в нем 2 переменные имя и фамилия и методы get и set. Так же есть начальное активити в нем я ввожу Н раз имя и фамилию, сохраняя данные в объекте типа ArrayList. Проблема возникает когда я хочу передать этот объект.
activity1:
ArrayList person = new ArrayList();
–
–
Intent intent = new Intent(MainActivity.this, ViewActivity.class);
intent.putExtra(“pers”, person);
startActivity(intent);
Activity2:
private ArrayList person= (ArrayList) getIntent().getSerializableExtra(“pers”);
попробуй getIntent().getArrayListExtra(«pers»);
Доброе время суток. Скажите, если клик по кнопке вызывает переход на страницу 2, а данные мне нужно передать на страницу 10, как мне постоить код?
public void firstGame1(View view) {
Intent intent = new Intent(this, FirstGame2Activity.class);
if (rbg1.getCheckedRadioButtonId() == -1){
Toast.makeText(this, “Тебе сперва нужно выбрать один из ответов”, Toast.LENGTH_SHORT).show();
return;
}
//Нужно передать число 2 в FirstGameResultActivity
startActivity(intent);
}