Урок 28. Extras - передаем данные с помощью Intent

Обсуждение уроков
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Foenix » 10 ноя 2013, 12:56

ПОсмотрела ссылку. Ты прости, но еще уточню - мотай вначале лог в самый конец (как только произошла ошибка!) и ищи те красные строчки, которые относятся к ошибке, а ты все целиком скопировал - этого не нужно! Вообще это не так уж и сложно, многие тут вполне осволись со вставкой лога очень быстро.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Foenix » 10 ноя 2013, 12:59

хотела с твоего лога сюда скопировать твою ошибку, но что-то операция копирования-вставки там не работает, Так что сорри. ТАм у тебя несоответствие текствью (в xml) и едиттекст (в тексте), исправляй.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Nik
Сообщения: 63
Зарегистрирован: 08 ноя 2013, 21:17
Откуда: Pyatigorsk
Контактная информация:

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Nik » 10 ноя 2013, 14:01

Foenix писал(а):хотела с твоего лога сюда скопировать твою ошибку, но что-то операция копирования-вставки там не работает, Так что сорри. ТАм у тебя несоответствие текствью (в xml) и едиттекст (в тексте), исправляй.
Спасибо милая с меня шоколадка! разобрался в чем проблема. TextView была обозвана как EditText

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Foenix » 10 ноя 2013, 18:06

Nik писал(а):
Foenix писал(а):хотела с твоего лога сюда скопировать твою ошибку, но что-то операция копирования-вставки там не работает, Так что сорри. ТАм у тебя несоответствие текствью (в xml) и едиттекст (в тексте), исправляй.
Спасибо милая с меня шоколадка! разобрался в чем проблема. TextView была обозвана как EditText
Мне очень приятно, даже больше, чем шоколадка!
А то вон помочь стараешься, кто-то еще и нагрубит в ответ.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ilya_81
Сообщения: 2
Зарегистрирован: 30 апр 2014, 11:56

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Ilya_81 » 30 апр 2014, 12:17

Добрый день.

Подскажите, пожалуйста.
Как мне передать коллекцию ("List") с помощью intent?

В jave у меня получается.
..............................................
import java.util.ArrayList;
public class A {

ArrayList<B> b = new ArrayList<B>();
A(){
b.add(new B());
}
}

public class B {
int i;
int u;
B(){
i=2;
u=4;
}
public String toString(){
return String.format(" " + i+ " , " +u+ " " );
}
}

public class C extends A {
C(){
for(B e:b){
System.out.println(e);
}
}
}

public class Main {

public static void main(String[] args) {

new A(); new C();
}
}
.................................................................................
Взял простой пример....

В Android тоже выводится в Log.d(.....) (если в одном классе), а вот через intent - второй класс не видит коллекцию..

Как мне передать всю коллекцию во второй класс. и там уже работать с ней?

Спасибо...

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Viewer » 30 апр 2014, 12:33

Через Intent Extras (ровно как и через Bundle) можно передавать объекты простых типов JAVA а также сериализуемые объекты.
ArrayList тоже можно передавать, но только если он строкового типа ArrayList<String>
Для сериализации в Андроид лучше всего применять интерфейс Parcelable (см. уроки 68 и 69)

Ilya_81
Сообщения: 2
Зарегистрирован: 30 апр 2014, 11:56

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Ilya_81 » 30 апр 2014, 13:49

Ок.
Спасибо!

fermopili
Сообщения: 9
Зарегистрирован: 26 дек 2012, 23:32

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение fermopili » 02 май 2014, 17:44

А как можно передать через Intent группу данных различного типа : int , double и string. Их можно завернуть в class,
class Test
{
int i;
double d;
String s;
}
но как тогда передать class?

Аватара пользователя
Leeroy
Сообщения: 67
Зарегистрирован: 12 дек 2013, 21:25

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Leeroy » 02 май 2014, 22:39

fermopili писал(а):А как можно передать через Intent группу данных различного типа : int , double и string. Их можно завернуть в class,
class Test
{
int i;
double d;
String s;
}
но как тогда передать class?
http://startandroid.ru/ru/uroki/vse-uro ... ntent.html
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма

VovanVovani4
Сообщения: 2
Зарегистрирован: 22 май 2014, 15:12

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение VovanVovani4 » 22 май 2014, 15:16

Посдкажите как мне передать массив стрингов из главной активити в другую активити, но без запуска второй, что бы данные были в интенте или бундле, и когда юзер жмакнет на таб этой активити то они будут использоваться.

Аватара пользователя
Leeroy
Сообщения: 67
Зарегистрирован: 12 дек 2013, 21:25

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Leeroy » 22 май 2014, 23:21

VovanVovani4 писал(а):Посдкажите как мне передать массив стрингов из главной активити в другую активити, но без запуска второй, что бы данные были в интенте или бундле, и когда юзер жмакнет на таб этой активити то они будут использоваться.
без запуска второй активити? попробуй объявить массив как статик или используй parcelable или может через фрагмент
Java Core -> JDBC -> GoF -> Android SDK ->...
Телепрограмма в твоем смарте Телепрограмма

VovanVovani4
Сообщения: 2
Зарегистрирован: 22 май 2014, 15:12

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение VovanVovani4 » 23 май 2014, 11:49

Leeroy писал(а): без запуска второй активити? попробуй объявить массив как статик или используй parcelable или может через фрагмент
У меня в прилож. главная активити состоит из табов, а табы из активити. При создании главной активи я парсю файл и данные из него хочу передать в дочерние активити(табы), но только когда таб с дочерней активити будет выбран.
1)
В главной активити вот такой код был:

Код: Выделить всё

Intent intent = new Intent(this, TotalActivity.class);
Bundle bundle = new Bundle();
bundle.putStringArray("RATE", array);
intent.putExtras(bundle);
В активити для которой данные:

Код: Выделить всё

Bundle bundle = getIntent().getExtras();
int i=0;
while(i<6){
 valute[i]=bundle.getStringArray("RATE")[i];
i++;
}
2)
Я еще нашел в инетах вот такое вот, для главной:

Код: Выделить всё

Intent intent = new Intent();
 Bundle bundle = intent.getExtras();
 bundle.putStringArray("RATE", array);
В активити для которой данные:

Код: Выделить всё

Bundle bundle = getIntent().getExtras();
int i=0;
while(i<6){
array[i]=bundle.getStringArray("RATE")[i];
i++;
}
В обоих вариантах был nullpointerexception.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение klblk » 23 май 2014, 11:55

Самое время отказаться от активити в табах и перейти на фрагменты.

IceBlast
Сообщения: 2
Зарегистрирован: 18 июн 2014, 10:15

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение IceBlast » 18 июн 2014, 10:24

Доброго времени суток! Подскажите пожалуйста, как передать во вторую активность двумерный массив?
int[][] deep = new int[lmax][amax];
Если можно, пример передачи и приема. Заранее спасибо.

Аватара пользователя
Don77
Сообщения: 13
Зарегистрирован: 02 июл 2014, 00:21

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Don77 » 16 июл 2014, 21:48

IceBlast писал(а):Доброго времени суток! Подскажите пожалуйста, как передать во вторую активность двумерный массив?
int[][] deep = new int[lmax][amax];
Если можно, пример передачи и приема. Заранее спасибо.
У меня есть только один вариант - Передавать каждый столбец отдельно, с помощью метода getIntArrayExtra собирать их в другой активити. Другими словами - свой двумерный массив, в цикле, разделяешь на подмассивы, соответственно каждый из них добавляешь методом putExtra класса Intent. И уже в другой активити, собираешь их в двумерный массив. Как-то так )

IceBlast
Сообщения: 2
Зарегистрирован: 18 июн 2014, 10:15

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение IceBlast » 03 авг 2014, 10:31

Don77, спасибо за идею, буду пробовать. Хотя как-то громоздко, но других вариантов я не знаю. Еще раз спасибо!

0800009
Сообщения: 36
Зарегистрирован: 08 мар 2014, 20:40

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение 0800009 » 16 сен 2014, 18:15

А почему нельзя обойтись статическими классами для передачи данных между активити?
Вернее полями и методами.

kotr
Сообщения: 1
Зарегистрирован: 15 ноя 2014, 21:10

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение kotr » 15 ноя 2014, 22:03

Здравствуйте.

Есть задача: открывать файл *.html из папки raw в webview по тапу на пункт в listview. Имеется 10 файлов. По неопытности я начал создавать для каждого файла отдельный Activity. В процессе работы понял, что приложение нужно упрощать. Но не могу сообразить как реализовать следующую схему: сделать два Activity (в одном будет listview, в другом webview); при выборе в Activity1 пункта "3" открывается Activity2 с webview, в котором открывается файл 3.html (соответственно любой пункт "х" приводил бы к открытию соответствующего ему файла х.html).

Подскажите пожалуйста, каким образом можно реализовать такую схему.


MainActivity.java
[syntax=java]
package com.example.listweb;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

ListView lvnames;
String[] names;

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

lvnames = (ListView) findViewById(R.id.lvnames);

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.names,
android.R.layout.simple_list_item_1);
lvnames.setAdapter(adapter);


lvnames.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

Intent i = new Intent(getBaseContext(), WebViewActivity.class);
i.putExtra("names", position);
startActivity(i);
}
}
);
}
}


[/syntax]

strings.xml
[syntax=java]<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">listweb</string>
<string name="hello_world">Hello world!</string>
<string-array name="names">
<item>Иван</item>
<item>Марья</item>
<item>Петр</item>
<item>Антон</item>
<item>Даша</item>
<item>Борис</item>
<item>Костя</item>
<item>Игорь</item>
<item>Анна</item>
<item>Денис</item>
<item>Вадим</item>
<item>Ольга</item>
<item>Сергей</item>
</string-array>

</resources>
[/syntax]

WebViewActivity не выкладываю, поскольку там пока ничего нет - не могу сообразить как принять и обработать массив из strings.xml

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение doter.ua » 15 ноя 2014, 23:11

kotr
передавай в интенте номер нажатого элемента (position кажется)
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Урок 28. Extras - передаем данные с помощью Intent

Сообщение Fry » 15 янв 2015, 22:42

Возник вопрос, решил его тут задать.

Вот у Активити ведь конструктор, который можно перегружать - так? Его можно использовать для передачи вообще любых данных. Например, для передачи объектов напрямую без заморочек с Parcelable.

Соответственно, в каких случаях можно так передавать данные, а в каких случах без putExtra не обойтись?
Arbeit macht Fry

Ответить