Страница 1 из 6
Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 27 окт 2011, 03:00
damager82
В этом уроке:
- передаем данные с помощью Intent
Click here to read this article!
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 12 янв 2012, 14:35
VitaMin00
Здравствуйте. Подскажите пожалуйста, никак не могу понять и хелп тоже не спас. Если за место String, я хочу передать другой тип данных, например int number1=0; как это организовать?
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 12 янв 2012, 14:52
RagnarR
VitaMin00 писал(а):Здравствуйте. Подскажите пожалуйста, никак не могу понять и хелп тоже не спас. Если за место String, я хочу передать другой тип данных, например int number1=0; как это организовать?
Просто вместо putString() используешь метод putInt()
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 12 янв 2012, 21:31
VitaMin00
вот:
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnActTwo:
Intent intent = new Intent(this, ActivityTwo.class);
intent.putExtra("lname", tvOut.getText().toString()); --------- тут хватаю string из textView под id tvOut.
intent.putExtra("intn1", number1); -----правильно беру int ( int number1=2) ???
startActivity(intent);
break;
------
String LName = intent.getStringExtra("lname");
int number0 = intent....... что я тут должен написать?
tv0102.setText(" бла бла бла "+ LName+ number0);
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 12 янв 2012, 23:16
damager82
VitaMin00 писал(а):вот:
int number0 = intent....... что я тут должен написать?
Метод getIntExtra (
http://developer.android.com/reference/ ... ng,%20int))
Там задаете ваш ключ "intn1" и значение по умолчанию, например 0.
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 13 янв 2012, 08:50
VitaMin00
Всё сработало, спасибо большое
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 17 фев 2012, 11:51
marmota
Спасибо за урок.
Может это немного не в контексте обсуждаемого в уроке, но подскажите:
Как в реальных приложениях на Android принято с этими переменными обращаться
Код: Выделить всё
intent.putExtra("fname", etFName.getText().toString());
intent.putExtra("lname", etLName.getText().toString());
Код: Выделить всё
String fname = intent.getStringExtra("fname");
String lname = intent.getStringExtra("lname");
не будешь же всегда помнить, что передаешь "fname", к примеру.
static final переменные создаются в том Activity, которое передает переменные или как-то по-другому принято?
Спасибо!!!
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 17 фев 2012, 13:35
damager82
Я не встречал чего-то общепринятого.
Сейчас, например, пишу приложение и все такие static final переменные храню просто в отдельном классе Common.
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 31 мар 2012, 13:57
chuikoff
Сейчас, например, пишу приложение и все такие static final переменные храню просто в отдельном классе Common.
А как потом подключаете этот класс и используете его переменные, расскажите пожалуйста с примером кода.
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 31 мар 2012, 15:46
chuikoff
Всё сделал как в вашем уроке, но мне null приходит, в чём может быть проблема?
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 31 мар 2012, 22:42
andev
chuikoff писал(а):Всё сделал как в вашем уроке, но мне null приходит, в чём может быть проблема?
в ошибочном коде. Выложите, сразу станет ясно
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 01 апр 2012, 03:45
chuikoff
andev писал(а):chuikoff писал(а):Всё сделал как в вашем уроке, но мне null приходит, в чём может быть проблема?
в ошибочном коде. Выложите, сразу станет ясно
KamchatkaActivity.java:
Код: Выделить всё
public class KamchatkaActivity extends Activity implements OnClickListener {
EditText request;
Button search;
/** Вызываем при загрузке. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
request = (EditText) findViewById(R.id.editText1);
search = (Button) findViewById(R.id.button1);
search.setOnClickListener(this);
}
/** Запускаем при клике поиск. */
public void onClick(View v)
{
Intent i = new Intent(this, Search.class);
i.putExtra("request", request.getText()).toString();
startActivity(i);
}
}
Search.java:
Код: Выделить всё
public class Search extends Activity {
/** Вызываем при загрузке. */
@Override
public void onCreate(Bundle savedInstantState){
super.onCreate(savedInstantState);
setContentView(R.layout.search);
Intent intent = getIntent();
TextView title = (TextView)findViewById(R.id.title);
String request = intent.getStringExtra("request");
title.setText("Поиск: "+request);
}
}
Вот.
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 01 апр 2012, 11:43
andev
У вас скобка не там, вы не тест кладете, а объект, естественно там Null
Код: Выделить всё
// у вас
i.putExtra("request", request.getText()).toString();
// нужно
i.putExtra("request", request.getText().toString());
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 02 апр 2012, 10:12
chuikoff
Спасибо!)
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 10 июн 2012, 09:21
Крысёна
Доброго времени суток!
Проблема такая, нужно передать внутри Intent данные из ArrayList<String>. Но так, чтобы все данные отобразились во втором Activity сразу. Пыталась сделать это так:
Код: Выделить всё
package ru.startandroid.develop.myproject_01;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
Button b1;
ArrayList<String> aList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
aList = new ArrayList<String>();
for (int i = 0; i < 7; i++) {
aList.add(Integer.toString(i));
}
b1 = (Button) findViewById(R.id.b1);
b1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(this, TwoActivity.class);
for (int j = 0; j < 7; j++) {
intent.putExtra("list", aList.get(j));
}
startActivity(intent);
}
}
Но при такой передаче запоминается только последняя запись, которая и отображается во втором Activity.
Если метод startActivity(intent); засунуть в цикл, то открывается семь Activity, что вполне логично. Я понимаю, что мой вопрос глупый, но как это сделать? Как реализовать передачу ArrayList'а?
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 10 июн 2012, 10:49
Prospekt
Способ быстрый, но не правильный:
Код: Выделить всё
intent.putExtra("List_size", aList.size());
for(int i=0; i<aList.size();i++){
intent.putExtra("list_"+Integer.toString(i), aList.get(i));
}
Почему неправильный?
1) существует вероятность пересечения имен с другими массивами
2) Если надо передать свой тип, то используйте (желательно) возможности Parsable
3) Если надо передать массив простых значений, к которому относится же и String, то у интента есть метод
putExtra(String _key, String[] _values)
И в вашем случае можно сделать просто
Код: Выделить всё
String[] array = (String[]) aList.toArray();
intent.putExtra("List_array", array);
Но при такой передаче запоминается только последняя запись, которая и отображается во втором Activity.
Ясен пень, что отображаться будет только одна.
Хеш таблица - это массив с произвольным ключом, если в двух словах.
Если Вы сделаете так: (псевдокод)
data["a"] = "1";
data["a"] = "2";
data["a"] = "3";
то в конце data["a"] будет содержать значение "3".
Каждый вызов putExtra("list", "something"); ложит в ячейку "list" соответствуещее значение, затирая предыдущее, если оно конечно там было.
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 10 июн 2012, 11:47
Крысёна
Спасибо большое. То, что надо
Prospekt писал(а):
3) Если надо передать массив простых значений, к которому относится же и String, то у интента есть метод
putExtra(String _key, String[] _values)
И в вашем случае можно сделать просто
Код: Выделить всё
String[] array = (String[]) aList.toArray();
intent.putExtra("List_array", array);
Это верно, можно сделать и проще, но задача была именно такая - передать ArrayList.
Благодарю за помощь!
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 16 июл 2012, 15:15
Artemko
мне нужно передать картинку для imagebutton, тоесть нажимаем на кнопку, выбираем картинку, возвращаемся с результатом и присваиваем эту картинку ImageButton'у. Какой тип данных для этого использовать?
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 17 июл 2012, 11:16
damager82
Artemko писал(а):мне нужно передать картинку для imagebutton, тоесть нажимаем на кнопку, выбираем картинку, возвращаемся с результатом и присваиваем эту картинку ImageButton'у. Какой тип данных для этого использовать?
Правильнее передавать не саму картинку, а ее адрес картинки в проекте/файловой системе/контенте.
Если картинка из инета, то при первом скачивании сохраняете куда-нить, и опять же этот адрес и передаете в Intent.
Re: Урок 28. Extras - передаем данные с помощью Intent
Добавлено: 18 июл 2012, 09:35
Artemko
как правильно передать адрес картинки, которая находится в проекте и потом присвоить? Можно пример плиз)