Урок 28. Extras - передаем данные с помощью Intent
Re: Урок 28. Extras - передаем данные с помощью Intent
кладёшь в стринг адрес картинки и передаёшь в интент. У меня было приложение в котором надо было качать картинки и сохранять временно, потом отображать, хранил в папке проекта, но ссылки на картинки хранил в бд (или даже один раз сделал альтернативный вариант: сохранял картинки в папку и потом читал с папки файлы). Как видишь способо реализовать много, выбирай что лучше и легче. Что именно не понятно, спрашивай.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 28. Extras - передаем данные с помощью Intent
я передаю данные:
потом хочу установить эту картинку на кнопку, но не знаю как правильно это сделать
Код: Выделить всё
intent.putExtra("ImageResource", R.drawable.image);
Код: Выделить всё
Intent intent = getIntent();
String img = intent.getStringExtra("ImageResource");
ImageButton btn = (ImageButton)findViewById(R.id.btn);
btn.setImageDrawable(img);
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 28. Extras - передаем данные с помощью Intent
Artemko, Вы передаете в intent не картинку а id этой картинки.
id имеет тип int, следовательно, значение нужно извлекать по другому. Картинку тоже нужно ставить по другому.
id имеет тип int, следовательно, значение нужно извлекать по другому.
Код: Выделить всё
int imgId = intent.getIntegerExtra("ImageResource");
Код: Выделить всё
btn.setImageResource(imgId);
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
-
- Сообщения: 1
- Зарегистрирован: 27 июл 2012, 11:17
Re: Урок 28. Extras - передаем данные с помощью Intent
Подскажите, пожалуйста, как передать значение не примитивов данных (массивов примитивов), а своего написанного класса.
Re: Урок 28. Extras - передаем данные с помощью Intent
урок 69 тебе в помощAlexandrNikulin писал(а):Подскажите, пожалуйста, как передать значение не примитивов данных (массивов примитивов), а своего написанного класса.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 28. Extras - передаем данные с помощью Intent
что конкретно те6е нужно передать? ссылки, коллекции о6ьектов, etc...?AlexandrNikulin писал(а):Подскажите, пожалуйста, как передать значение не примитивов данных (массивов примитивов), а своего написанного класса.
CEO of a company R.id.team
Re: Урок 28. Extras - передаем данные с помощью Intent
Добрый день!
Подскажите какое время жизни интента. Допустим при передачи данных через putExtra, в вызываемом активити забираем их через getExtra в методе onCreate. Потом допустим данное активити закрывается системой (допустим повернули экран, поменяли ориентацию и вызвался метод onDestroy ). То при повторном onCreate данный интент с преданными данными будет существовать? Или из интента можно забрать данные только по первому вызову onCreate
Подскажите какое время жизни интента. Допустим при передачи данных через putExtra, в вызываемом активити забираем их через getExtra в методе onCreate. Потом допустим данное активити закрывается системой (допустим повернули экран, поменяли ориентацию и вызвался метод onDestroy ). То при повторном onCreate данный интент с преданными данными будет существовать? Или из интента можно забрать данные только по первому вызову onCreate
Re: Урок 28. Extras - передаем данные с помощью Intent
Накидал пример. Данные из Intent можно получать каждый раз после поворота экрана. Где-то он их хранит и каждый раз передает в Activity.kalexey писал(а):Добрый день!
Подскажите какое время жизни интента. Допустим при передачи данных через putExtra, в вызываемом активити забираем их через getExtra в методе onCreate. Потом допустим данное активити закрывается системой (допустим повернули экран, поменяли ориентацию и вызвался метод onDestroy ). То при повторном onCreate данный интент с преданными данными будет существовать? Или из интента можно забрать данные только по первому вызову onCreate
Re: Урок 28. Extras - передаем данные с помощью Intent
а как можно передать значение int-ой переменно из класса унаследованного от Activity в класс, который унаследован от SurfaceView или View?
Re: Урок 28. Extras - передаем данные с помощью Intent
скажите пожалуйстаа можно ли сделать так чтоб в активити в которое приходят данные выводило бы их в виде списка.
как то так:
данные1
данные2
....
данныеn
как то так:
данные1
данные2
....
данныеn
Re: Урок 28. Extras - передаем данные с помощью Intent
Тут недавно столкнулся с тем, что моя активити была запущена в режиме синглтон и новые данные через Intent она не получала. Если активити была при вызове в памяти устройства, то на вход получался Intent, который был сформирован при первом вызове.
Чтоб в таком случае отловить новый Intent, нужно перекрыть метод onNewIntent в активити.
Чтоб в таком случае отловить новый Intent, нужно перекрыть метод onNewIntent в активити.
Re: Урок 28. Extras - передаем данные с помощью Intent
интересно, что это за активити должно быть что бы держать её в памяти?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 28. Extras - передаем данные с помощью Intent
В моем случае это не активити, это взаимодействие с аппаратом. Я заметил следующее, что если нажать кнопку back на устройстве, то активити выгружается, а если нажать кнопку home, то оно остается в памяти. В результате, когда я сворачивал приложение кнопкой home и вызывал заново приложение через кнопку на виджете, я не получал обновленные Extra данные, то есть я получал старый Intent.rezak90 писал(а):интересно, что это за активити должно быть что бы держать её в памяти?
П.С. В общем-то мелочь, но она раздражала, так как на виджете выбирается дата и она не обновлялась в приложении.
-
- Сообщения: 3
- Зарегистрирован: 29 сен 2013, 15:14
Re: Урок 28. Extras - передаем данные с помощью Intent
код в майнактивити
[syntax=java5] package com.mycompany.svetofor;
import android.app.*;
import android.os.*;
import android.view.View.*;
import android.widget.*;
import android.view.*;
import android.content.*;
public class MainActivity extends Activity implements OnClickListener
{
@Override
Button btnred;
Button btngreen;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnred = (Button) findViewById(R.id.btnred);
btngreen = (Button) findViewById(R.id.btngreen);
btngreen.setOnClickListener(this);
btnred.setOnClickListener(this);
}
public void onClick(View v)
{
Intent intent = new Intent(MainActivity.this, AboutActivity.class);
switch (v.getId())
{
case R.id.btngreen:
intent.putExtra("user", "green");
startActivity(intent);
break;
case R.id.btnred:
intent.putExtra("user", "red");
startActivity(intent);
break;
}
}
} [/syntax]
код эбаутактивити
[syntax=java5] package com.mycompany.svetofor;
import android.app.*;
import android.os.*;
import android.widget.*;
public class AboutActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
String user = getIntent().getStringExtra("user");
TextView aboutText = (TextView) findViewById(R.id.aboutText);
//aboutText.setText(user);
if(user=="green")
aboutText.setText(R.string.aboutt);
else
if(user=="red")
aboutText.setText(R.string.abou);
else
aboutText.setText("Ничего не нажал");
}
}
[/syntax]
почему условие не выполняется?
[syntax=java5] package com.mycompany.svetofor;
import android.app.*;
import android.os.*;
import android.view.View.*;
import android.widget.*;
import android.view.*;
import android.content.*;
public class MainActivity extends Activity implements OnClickListener
{
@Override
Button btnred;
Button btngreen;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnred = (Button) findViewById(R.id.btnred);
btngreen = (Button) findViewById(R.id.btngreen);
btngreen.setOnClickListener(this);
btnred.setOnClickListener(this);
}
public void onClick(View v)
{
Intent intent = new Intent(MainActivity.this, AboutActivity.class);
switch (v.getId())
{
case R.id.btngreen:
intent.putExtra("user", "green");
startActivity(intent);
break;
case R.id.btnred:
intent.putExtra("user", "red");
startActivity(intent);
break;
}
}
} [/syntax]
код эбаутактивити
[syntax=java5] package com.mycompany.svetofor;
import android.app.*;
import android.os.*;
import android.widget.*;
public class AboutActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.about);
String user = getIntent().getStringExtra("user");
TextView aboutText = (TextView) findViewById(R.id.aboutText);
//aboutText.setText(user);
if(user=="green")
aboutText.setText(R.string.aboutt);
else
if(user=="red")
aboutText.setText(R.string.abou);
else
aboutText.setText("Ничего не нажал");
}
}
[/syntax]
почему условие не выполняется?
Re: Урок 28. Extras - передаем данные с помощью Intent
[quote="Perewozcheg"][/quote]
У меня ещё мало опыта, могу не угадать где ошибка.
Из урока:
А ниже, Ваш код:
Эти фрагменты отличаются, может в этом ошибка.
И ещё,
import android.app.*;
import android.os.*;
import android.widget.*;
так обычно не пишут (это звёздочки в конце классов), а используют только те классы которые нужны.
Удалите все import, а затем нажмите кнопки shift+ctrl+O (т.е. буква O) и добавятся только те классы, которые необходимы.
Рекомендую пользоваться логированием
т.е. вначале класса объявили переменную
final String LOG_TAG = "myLogs";
а далее, где нужно
Log.d(LOG_TAG, " значение ID = " + rowID);
и ошибки смотреть на закладке LogCat в eclipse по тегу "myLogs" (без кавычек)
пример логирования из урока 34
http://startandroid.ru/ru/uroki/vse-uro ... qlite.html
У меня ещё мало опыта, могу не угадать где ошибка.
Из урока:
Код: Выделить всё
Intent intent = getIntent();
String fName = intent.getStringExtra("fname");
String lName = intent.getStringExtra("lname");
Код: Выделить всё
String user = getIntent().getStringExtra("user");
И ещё,
import android.app.*;
import android.os.*;
import android.widget.*;
так обычно не пишут (это звёздочки в конце классов), а используют только те классы которые нужны.
Удалите все import, а затем нажмите кнопки shift+ctrl+O (т.е. буква O) и добавятся только те классы, которые необходимы.
Рекомендую пользоваться логированием
т.е. вначале класса объявили переменную
final String LOG_TAG = "myLogs";
а далее, где нужно
Log.d(LOG_TAG, " значение ID = " + rowID);
и ошибки смотреть на закладке LogCat в eclipse по тегу "myLogs" (без кавычек)
пример логирования из урока 34
http://startandroid.ru/ru/uroki/vse-uro ... qlite.html
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
-
- Сообщения: 3
- Зарегистрирован: 29 сен 2013, 15:14
Re: Урок 28. Extras - передаем данные с помощью Intent
Пишу на телефоне а не на пк, так щас в армии и пк личного нет тут. на смарте немного другие особенности обновления импорта. в данном случае на работоспособность как таковую не влияет. допустим при нажатии на кнопку btngreen значение green передается на второе активити. но почему то при выполнении иф эльзе код не работает.
-
- Сообщения: 3
- Зарегистрирован: 29 сен 2013, 15:14
Re: Урок 28. Extras - передаем данные с помощью Intent
разобрался я с вопросом. оказалось что строки на прямую сравнивать нельзя. надо через equals
Re: Урок 28. Extras - передаем данные с помощью Intent
Падает приложение в, казалось бы, невозможном месте (startActivity(intent);). Переделываю программу в части работы с БД, до сих пор все это уже стабильно работало и мне кажется, к данному участку кода манипуляции с БД вообще не имеют отношения. Но в чем же тогда может быть дело (подскажите, плз, хотя бы тип/вид возможной ошибки)? В LogCat пока мало понимаю, но видно, что точка M1 пройдена, а до точки "00 при создании" не дошло ((... Но между ними же практически ничего нет!
фрагмент кода в MainActivity.java:
фрагмент CardActivity.java:
LogCat:
фрагмент кода в MainActivity.java:
Код: Выделить всё
case R.id.btnNew :
// открываем пустую формочку элемента со значением тек.МХ
Intent intent = new Intent( this, CardActivity. class);
intent.putExtra( "intCurStorPlaceId" , intCurStorPlaceId );
intent.putExtra( "fullPathStorPlace" , fullPathStorPlace );
intent.putExtra( "key" , "btnNew" );
Log. d( LOG_TAG, "M1 intent" );
startActivity(intent);
break;
Код: Выделить всё
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. card );
Log. d( LOG_TAG, "00 при создании" );
........
Код: Выделить всё
09-28 10:10:43.595: D/myLogs(15079): M1 intent
09-28 10:10:43.644: D/AndroidRuntime(15079): Shutting down VM
09-28 10:10:43.644: W/dalvikvm(15079): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-28 10:10:43.675: E/AndroidRuntime(15079): FATAL EXCEPTION: main
09-28 10:10:43.675: E/AndroidRuntime(15079): java.lang.NullPointerException
09-28 10:10:43.675: E/AndroidRuntime(15079): at com.my.inventory.MainActivity.onClick(MainActivity.java:175)
09-28 10:10:43.675: E/AndroidRuntime(15079): at android.view.View.performClick(View.java:2408)
09-28 10:10:43.675: E/AndroidRuntime(15079): at android.view.View$PerformClick.run(View.java:8816)
09-28 10:10:43.675: E/AndroidRuntime(15079): at android.os.Handler.handleCallback(Handler.java:587)
09-28 10:10:43.675: E/AndroidRuntime(15079): at android.os.Handler.dispatchMessage(Handler.java:92)
09-28 10:10:43.675: E/AndroidRuntime(15079): at android.os.Looper.loop(Looper.java:123)
09-28 10:10:43.675: E/AndroidRuntime(15079): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-28 10:10:43.675: E/AndroidRuntime(15079): at java.lang.reflect.Method.invokeNative(Native Method)
09-28 10:10:43.675: E/AndroidRuntime(15079): at java.lang.reflect.Method.invoke(Method.java:521)
09-28 10:10:43.675: E/AndroidRuntime(15079): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-28 10:10:43.675: E/AndroidRuntime(15079): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-28 10:10:43.675: E/AndroidRuntime(15079): at dalvik.system.NativeStart.main(Native Method)
09-28 10:10:48.195: I/Process(15079): Sending signal. PID: 15079 SIG: 9
Re: Урок 28. Extras - передаем данные с помощью Intent
09-28 10:10:43.675: E/AndroidRuntime(15079): at com.my.inventory.MainActivity.onClick(MainActivity.java:175)
сюда два раза щелкаешь. Дальше уже просто устала повторять.
сюда два раза щелкаешь. Дальше уже просто устала повторять.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 28. Extras - передаем данные с помощью Intent
[quote="Mike"][/quote]
Может в файле манифеста не прописана вторая активность? (или имя там указано с ошибкой)
Или поэкспериментируйте:
1. Создайте новую активность, и попытайтесь её открыть (без передачи параметров)
2. Если получился шаг 1. Передайте один параметр.
и т.д. так и обнаружите в чём ошибка.
Может в файле манифеста не прописана вторая активность? (или имя там указано с ошибкой)
Или поэкспериментируйте:
1. Создайте новую активность, и попытайтесь её открыть (без передачи параметров)
2. Если получился шаг 1. Передайте один параметр.
и т.д. так и обнаружите в чём ошибка.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.