Урок 28. Extras - передаем данные с помощью Intent
Re: Урок 28. Extras - передаем данные с помощью Intent
Добрый день!
Создаю в первом активити:
ArrayList<String> answerList = new ArrayList<String>();
заполняю здесь же:
answerList.add(tek);
передаю в другое(-ой, -ую) активити:
if (v.getId()==R.id.btnegal){
Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
}
В другом активити:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
// находим список
lvMain = (ListView) findViewById(R.id.lvMain);
Intent intent = getIntent();
ArrayList <String> answerListView = intent. ???;
// создаем адаптер
ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, answerListView);
// присваиваем адаптер списку
lvMain.setAdapter(myadapter);
Вопрос - как передать ArrayList в ListView в Другом активити? Перепробовал разные варианты и ухищрения с гуглением - затык. Помогите, пожалуйста.
(Далее задача усложнится - обратно передать выбранное значение из этого Другого активити в первое, но хотя бы первую часть)
Создаю в первом активити:
ArrayList<String> answerList = new ArrayList<String>();
заполняю здесь же:
answerList.add(tek);
передаю в другое(-ой, -ую) активити:
if (v.getId()==R.id.btnegal){
Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
}
В другом активити:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
// находим список
lvMain = (ListView) findViewById(R.id.lvMain);
Intent intent = getIntent();
ArrayList <String> answerListView = intent. ???;
// создаем адаптер
ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, answerListView);
// присваиваем адаптер списку
lvMain.setAdapter(myadapter);
Вопрос - как передать ArrayList в ListView в Другом активити? Перепробовал разные варианты и ухищрения с гуглением - затык. Помогите, пожалуйста.
(Далее задача усложнится - обратно передать выбранное значение из этого Другого активити в первое, но хотя бы первую часть)
Re: Урок 28. Extras - передаем данные с помощью Intent
Так как у меня не получилось и ответов нет, решил упростить задачу.
В создаю класс:
public class mConstList {
public static String [] arr = new String [10];
}
В mainactivity его заполняю и передаю в другое activity:
mList++;
mConstList.arr[mList]=Double.toString(result);
Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
Во втором активити пытаюсь вывести в виде списка:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
// находим список
lvMain = (ListView) findViewById(R.id.lvMain);
//Intent intent = getIntent().getExtras();
//Bundle b=getIntent().getExtras();
//Bundle b = new Bundle();
//ArrayList <String> answerListView = b.getStringArrayList("answerList");
// создаем адаптер
ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mConstList.arr);
// присваиваем адаптер списку
lvMain.setAdapter(myadapter);
При вызове этого второго активити программа вываливается. Если создать массив в этом активити, то все работает. В чем дело? Классы нельзя так просто передавать?
В создаю класс:
public class mConstList {
public static String [] arr = new String [10];
}
В mainactivity его заполняю и передаю в другое activity:
mList++;
mConstList.arr[mList]=Double.toString(result);
Intent intent = new Intent(this, ActivityTwo.class);
startActivity(intent);
Во втором активити пытаюсь вывести в виде списка:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
// находим список
lvMain = (ListView) findViewById(R.id.lvMain);
//Intent intent = getIntent().getExtras();
//Bundle b=getIntent().getExtras();
//Bundle b = new Bundle();
//ArrayList <String> answerListView = b.getStringArrayList("answerList");
// создаем адаптер
ArrayAdapter<String> myadapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mConstList.arr);
// присваиваем адаптер списку
lvMain.setAdapter(myadapter);
При вызове этого второго активити программа вываливается. Если создать массив в этом активити, то все работает. В чем дело? Классы нельзя так просто передавать?
Re: Урок 28. Extras - передаем данные с помощью Intent
Спасибо, проблема решена, нашел ошибку.
Re: Урок 28. Extras - передаем данные с помощью Intent
При нажатии на поле EditText в эмуляторе (AS 1.3.1, Android 5.1) не открывается клавиатура и не происходит считывание текста, в чем может быть проблема?
-
- Сообщения: 9
- Зарегистрирован: 15 окт 2015, 15:14
Re: Урок 28. Extras - передаем данные с помощью Intent
Здравствуйте, сразу хочу извениться, если вопрос не самый умный, я новичок и хотел узнать мнение профи. Скажите, чем может грозить вместо putExtra передавать значения через Intent, тупо записать значение в SharedPreference и потом вытащить их в другом Activity. Я знаю, что это сработает, но все же где подвох ? Спасибо если кто то сможет объяснить разницу.
-
- Сообщения: 13
- Зарегистрирован: 24 янв 2014, 02:45
Re: Урок 28. Extras - передаем данные с помощью Intent
А как передать данные два раза? И чтоб одни не заменили другие. Пример. Выводим имя и фамилию, вася Петров, это добавилось потом еще раз через это же активити иван Иванов и это добавилось ниже.
Re: Урок 28. Extras - передаем данные с помощью Intent
Второе Activity вместо введенных данных выдает NULL. Код просмотрел 10 раз. Ошибок нет. В чем может быть проблема?
-
- Сообщения: 115
- Зарегистрирован: 08 янв 2015, 14:32
Re: Урок 28. Extras - передаем данные с помощью Intent
данные можно передавать как угодно. можно вообще сохранять в файл и потом читать из него. тут больше вопрос эстетики и целесообразности.Здравствуйте, сразу хочу извениться, если вопрос не самый умный, я новичок и хотел узнать мнение профи. Скажите, чем может грозить вместо putExtra передавать значения через Intent, тупо записать значение в SharedPreference и потом вытащить их в другом Activity. Я знаю, что это сработает, но все же где подвох ? Спасибо если кто то сможет объяснить разницу.
Ради передачи одной несчастной переменной дёргать SharedPreference не комильфо. - putExtra рулит)
в SharedPreference, например, удобно хранить ник пользователя, его накопленые очки/бонусы и тп... такие глобальные переменные, которые используются во всём приложении.
но иногда данных слишком много - тут уже на помощь БД. и файлы промежуточные пожалуйста.
а про ПОДВОХ с SharedPreference - может случиться такая весчь: например вы используете несколько потоков. каждый поток пишет в SharedPreference и читает из него. всё какбы ничего, но может случиться так, что один поток пишет и ещё не дописал. а другой поток уже лезет получать данные.
Ну а вообще, про классический вариант передачи данных в JAVA - создайте Public класс с переменными. пропишите туда методы GET и SET. Когда разберёте этот механизм, сразу станет всё понятно.
Re: Урок 28. Extras - передаем данные с помощью Intent
Здравствуйте!
начну попорядку -
в первой mapactivity онкликлистенер вызывает другую активити
public void levelmap_1_start (View v){//кнопка level 1
Intent intent = new Intent(MapActivity.this, MainActivity.class);
intent.putExtra(MainActivity.LEVEL_ID1, "1");
startActivity(intent);
}
в mainactivity запускается следущяя
game = new Game(this.getApplicationContext(), screen, 30);
после Game еще одна LoadScene но уже с указанием номера сцены
scene = new com.test.game.LoadScene(this, 1);
и в следующей
int id;
public LoadScene(Game game, int id) {
super(game);
this.id = id;
}
как мне передать параметр ID для все этих активити?
или хотябы в LoadScene был доступен ID передаваемый с кнопки. чтобы подставить его вместо 1
scene = new com.test.game.LoadScene(this, 1);
голову сломал блин... новичок еще ...
начну попорядку -
в первой mapactivity онкликлистенер вызывает другую активити
public void levelmap_1_start (View v){//кнопка level 1
Intent intent = new Intent(MapActivity.this, MainActivity.class);
intent.putExtra(MainActivity.LEVEL_ID1, "1");
startActivity(intent);
}
в mainactivity запускается следущяя
game = new Game(this.getApplicationContext(), screen, 30);
после Game еще одна LoadScene но уже с указанием номера сцены
scene = new com.test.game.LoadScene(this, 1);
и в следующей
int id;
public LoadScene(Game game, int id) {
super(game);
this.id = id;
}
как мне передать параметр ID для все этих активити?
или хотябы в LoadScene был доступен ID передаваемый с кнопки. чтобы подставить его вместо 1
scene = new com.test.game.LoadScene(this, 1);
голову сломал блин... новичок еще ...
Re: Урок 28. Extras - передаем данные с помощью Intent
Всем привет.
Объясните, пожалуйста.
В чём отличие двух вариантов кода
В чём отличие так то я понимаю. Метод getText() возвращает объект класса Editable, а требуется параметр типа String. Вроде бы должно срабатывать автоматическое приведение типов, и у Editable должен так и так вызываться метод ToString(). И вроде бы всё так и происходит. В дебагинге, если смотреть содержимое переменной intent в поле mExtra, затем в mMap хранятся две введённых мной строки, но при getIntent() во втором активити эти поля уже пустые и соответственно на экране null, null.
Сравнивал содержимое intent.mExtras.mMap для обоих вариантов кода, на мой взгляд оно идентично, но работает только вариант с явным вызовом ToString().
Объясните, пожалуйста.
В чём отличие двух вариантов кода
Код: Выделить всё
intent.putExtra("fname", etFName.getText().ToString);
intent.putExtra("lname", etLName.getText().ToString);
Код: Выделить всё
intent.putExtra("fname", etFName.getText());
intent.putExtra("lname", etLName.getText());
Сравнивал содержимое intent.mExtras.mMap для обоих вариантов кода, на мой взгляд оно идентично, но работает только вариант с явным вызовом ToString().
Re: Урок 28. Extras - передаем данные с помощью Intent
Добрый день. Собственно столкнулся с такой проблемой:
С помощью Intent помимо текста, я хочу передать и его параметры( размер и цвет)
С передачей самого текста и его размера никаких сложностей не возникло, а вот на передаче цвета текста я застопорился.
Вопрос: каким образом реализовать передачу параметра цвета текста?
ЗЫ предпологаю, что делается совсем просто, но у меня это вызвало затруднение
С помощью Intent помимо текста, я хочу передать и его параметры( размер и цвет)
С передачей самого текста и его размера никаких сложностей не возникло, а вот на передаче цвета текста я застопорился.
Вопрос: каким образом реализовать передачу параметра цвета текста?
ЗЫ предпологаю, что делается совсем просто, но у меня это вызвало затруднение
Re: Урок 28. Extras - передаем данные с помощью Intent
Привет всем!
Скажите, а как передать в другую активность уже инициализированную числовую переменную (например Int)?
Попробовал так (AddItemAction - инициализированная ранее переменная int) - пишет, что переменная не должна быть инициализирована.
Скажите, а как передать в другую активность уже инициализированную числовую переменную (например Int)?
Код: Выделить всё
Intent AddItemIntent = new Intent(MainActivity.this, AddItem.class);
AddItemIntent.putExtra("AddItemAction", AddItemAction);
startActivity(AddItemIntent);
Re: Урок 28. Extras - передаем данные с помощью Intent
если мы говорим про статические переменные и методы помеченные как publicchuikoff писал(а):А как потом подключаете этот класс и используете его переменные, расскажите пожалуйста с примером кода.Сейчас, например, пишу приложение и все такие static final переменные храню просто в отдельном классе Common.
Common.MY_VARIABLE
Re: Урок 28. Extras - передаем данные с помощью Intent
Извините за приступ кретинизма. Но второй день мучаюсь. Выдает ноль и хоть ты тресни.
Блок передачи
Блок приема
Приложение крашется с ошибкой
rocess: com.example.android.trener_math, PID: 5272
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.trener_math/com.example.android.trener_math.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
Блок передачи
Код: Выделить всё
public void ClickStart(View view) {
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("fest_dig", fest_text.getText().toString());
intent.putExtra("sec_dig", sec_text.getText().toString());
startActivity(intent);
}
Код: Выделить всё
Intent intent = getIntent();
String fest = intent.getStringExtra("fest_dig");
String sec = intent.getStringExtra("sec_dig");
rocess: com.example.android.trener_math, PID: 5272
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.trener_math/com.example.android.trener_math.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' on a null object reference
-
- Сообщения: 1
- Зарегистрирован: 13 авг 2018, 09:28
Re: Урок 28. Extras - передаем данные с помощью Intent
А можно редактировать manifest из кода? В частности Intetn-filter. К примеру временно заблокировать его? Или проверять на то, что приложение уже запущено?