Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 14 ноя 2018, 16:21

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
СообщениеДобавлено: 03 авг 2015, 17:37 

Зарегистрирован: 23 июл 2015, 14:54
Сообщений: 10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день!

Создаю в первом активити:
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 в Другом активити? Перепробовал разные варианты и ухищрения с гуглением - затык. Помогите, пожалуйста.
(Далее задача усложнится - обратно передать выбранное значение из этого Другого активити в первое, но хотя бы первую часть)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 авг 2015, 12:14 

Зарегистрирован: 23 июл 2015, 14:54
Сообщений: 10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Так как у меня не получилось и ответов нет, решил упростить задачу.

В создаю класс:

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);


При вызове этого второго активити программа вываливается. Если создать массив в этом активити, то все работает. В чем дело? Классы нельзя так просто передавать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 авг 2015, 12:56 

Зарегистрирован: 23 июл 2015, 14:54
Сообщений: 10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо, проблема решена, нашел ошибку.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 сен 2015, 14:28 

Зарегистрирован: 03 сен 2015, 14:23
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
При нажатии на поле EditText в эмуляторе (AS 1.3.1, Android 5.1) не открывается клавиатура и не происходит считывание текста, в чем может быть проблема?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 окт 2015, 16:08 

Зарегистрирован: 15 окт 2015, 15:14
Сообщений: 9
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Здравствуйте, сразу хочу извениться, если вопрос не самый умный, я новичок и хотел узнать мнение профи. Скажите, чем может грозить вместо putExtra передавать значения через Intent, тупо записать значение в SharedPreference и потом вытащить их в другом Activity. Я знаю, что это сработает, но все же где подвох ? Спасибо если кто то сможет объяснить разницу.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 окт 2015, 22:50 

Зарегистрирован: 24 янв 2014, 02:45
Сообщений: 13
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
А как передать данные два раза? И чтоб одни не заменили другие. Пример. Выводим имя и фамилию, вася Петров, это добавилось потом еще раз через это же активити иван Иванов и это добавилось ниже.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 дек 2015, 07:39 

Зарегистрирован: 06 дек 2015, 09:08
Сообщений: 2
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Второе Activity вместо введенных данных выдает NULL. Код просмотрел 10 раз. Ошибок нет. В чем может быть проблема?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 дек 2015, 09:17 

Зарегистрирован: 08 янв 2015, 14:32
Сообщений: 115
Благодарил (а): 6 раз.
Поблагодарили: 5 раз.
Цитата:
Здравствуйте, сразу хочу извениться, если вопрос не самый умный, я новичок и хотел узнать мнение профи. Скажите, чем может грозить вместо putExtra передавать значения через Intent, тупо записать значение в SharedPreference и потом вытащить их в другом Activity. Я знаю, что это сработает, но все же где подвох ? Спасибо если кто то сможет объяснить разницу.


данные можно передавать как угодно. можно вообще сохранять в файл и потом читать из него. тут больше вопрос эстетики и целесообразности.

Ради передачи одной несчастной переменной дёргать SharedPreference не комильфо. - putExtra рулит)

в SharedPreference, например, удобно хранить ник пользователя, его накопленые очки/бонусы и тп... такие глобальные переменные, которые используются во всём приложении.

но иногда данных слишком много - тут уже на помощь БД. и файлы промежуточные пожалуйста.

а про ПОДВОХ с SharedPreference - может случиться такая весчь: например вы используете несколько потоков. каждый поток пишет в SharedPreference и читает из него. всё какбы ничего, но может случиться так, что один поток пишет и ещё не дописал. а другой поток уже лезет получать данные.

Ну а вообще, про классический вариант передачи данных в JAVA - создайте Public класс с переменными. пропишите туда методы GET и SET. Когда разберёте этот механизм, сразу станет всё понятно.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 28 янв 2016, 07:48 

Зарегистрирован: 28 янв 2016, 07:30
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте!
начну попорядку -
в первой 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);
голову сломал блин... новичок еще ...


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 фев 2016, 21:33 

Зарегистрирован: 27 янв 2016, 14:16
Сообщений: 7
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
Всем привет.
Объясните, пожалуйста.
В чём отличие двух вариантов кода
Код: [ Загрузить ] [ Скрыть ]
  1. intent.putExtra("fname", etFName.getText().ToString); 
  2. intent.putExtra("lname", etLName.getText().ToString); 

Код: [ Загрузить ] [ Скрыть ]
  1. intent.putExtra("fname", etFName.getText()); 
  2. intent.putExtra("lname", etLName.getText()); 

В чём отличие так то я понимаю. Метод getText() возвращает объект класса Editable, а требуется параметр типа String. Вроде бы должно срабатывать автоматическое приведение типов, и у Editable должен так и так вызываться метод ToString(). И вроде бы всё так и происходит. В дебагинге, если смотреть содержимое переменной intent в поле mExtra, затем в mMap хранятся две введённых мной строки, но при getIntent() во втором активити эти поля уже пустые и соответственно на экране null, null.
Сравнивал содержимое intent.mExtras.mMap для обоих вариантов кода, на мой взгляд оно идентично, но работает только вариант с явным вызовом ToString().


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 июл 2016, 14:24 

Зарегистрирован: 05 июл 2016, 14:03
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день. Собственно столкнулся с такой проблемой:
С помощью Intent помимо текста, я хочу передать и его параметры( размер и цвет)
С передачей самого текста и его размера никаких сложностей не возникло, а вот на передаче цвета текста я застопорился.
Вопрос: каким образом реализовать передачу параметра цвета текста?

ЗЫ предпологаю, что делается совсем просто, но у меня это вызвало затруднение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 08 сен 2016, 10:23 

Зарегистрирован: 08 сен 2016, 10:18
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Привет всем!
Скажите, а как передать в другую активность уже инициализированную числовую переменную (например Int)?

Код: [ Загрузить ] [ Скрыть ]
  1. Intent AddItemIntent = new Intent(MainActivity.this, AddItem.class); 
  2.         AddItemIntent.putExtra("AddItemAction", AddItemAction); 
  3.         startActivity(AddItemIntent); 


Попробовал так (AddItemAction - инициализированная ранее переменная int) - пишет, что переменная не должна быть инициализирована.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 авг 2017, 13:17 

Зарегистрирован: 03 янв 2014, 14:28
Сообщений: 32
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
chuikoff писал(а):
Цитата:
Сейчас, например, пишу приложение и все такие static final переменные храню просто в отдельном классе Common.


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


если мы говорим про статические переменные и методы помеченные как public
Common.MY_VARIABLE


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 ноя 2017, 01:05 

Зарегистрирован: 03 ноя 2017, 00:59
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Извините за приступ кретинизма. Но второй день мучаюсь. Выдает ноль и хоть ты тресни.
Блок передачи
Код: [ Загрузить ] [ Скрыть ]
  1. public void ClickStart(View view) { 
  2.  
  3.         Intent intent = new Intent(this, MainActivity.class); 
  4.         intent.putExtra("fest_dig", fest_text.getText().toString()); 
  5.         intent.putExtra("sec_dig", sec_text.getText().toString()); 
  6.         startActivity(intent); 
  7.     } 


Блок приема

Код: [ Загрузить ] [ Скрыть ]
  1. Intent intent = getIntent(); 
  2.     String fest = intent.getStringExtra("fest_dig"); 
  3.     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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 авг 2018, 09:30 

Зарегистрирован: 13 авг 2018, 09:28
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
А можно редактировать manifest из кода? В частности Intetn-filter. К примеру временно заблокировать его? Или проверять на то, что приложение уже запущено?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 115 ]  На страницу Пред.  1, 2, 3, 4, 5, 6

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB