Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
#1

Доступ к элементам управления одной активности через другую - Программирование Android

23.04.2015, 22:37. Просмотров 1417. Ответов 41
Метки нет (Все метки)

Имеется две активности. Когда запускаю вторую активность, первую не выгружаю (не удаляю).
Можно ли сделать так, чтобы вторая активность имела доступ к элементам управления первой активности?
Я пробовал, например так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class SecondActivity extends Activity
{
 
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);      
 
        setContentView(R.layout.activity_second);
 
        CheckBox MyCheckBoxInFirstActivity = (CheckBox)findViewById(R.id.checkBoxInFirstActivity);
 
        MyCheckBoxInFirstActivity.setVisibility(View.GONE); // на этой строчке программа вылетает с ошибкой
 
    }     
  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2015, 22:37     Доступ к элементам управления одной активности через другую
Посмотрите здесь:
Данные не передаются из одной активности в другую Android
Передача данных из одной активности в третью Android
Доступ к элементам Activity из другого класса Android
Android Доступ к элементам вью во время создания Activity
Портирование с одной версии на другую Android
Android Передать параметр из одной в другую
Android Перевод из одной системы счисления в другую
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
23.04.2015, 23:01     Доступ к элементам управления одной активности через другую #2
Потому как MyCheckBoxInFirstActivity=null
Откуда желание изменять первую активность из второй? Почему бы не обновить элементы в onResume()?
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
24.04.2015, 13:07  [ТС]     Доступ к элементам управления одной активности через другую #3
Slon747, Вторая активность - окно с настройками. Настроек очень много, передавать туда-сюда данные через интенты (например) не хочется.
Цитата Сообщение от Slon747 Посмотреть сообщение
Почему бы не обновить элементы в onResume()?
Да, можно, наверное.. Я уже думал насчет onActivityResult, например.
Я не пойму как получить доступ к данным первой активити из второй, чтобы не создавать копии этих данных?
Я только-только перешел с c++ на java, и отсутствие указателей и глобальных объектов меня немного тормозит.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
24.04.2015, 15:21     Доступ к элементам управления одной активности через другую #4
znseday, пишите настройки сразу в sharedPreferencess и никаких проблем.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
24.04.2015, 16:18     Доступ к элементам управления одной активности через другую #5
Этож ищется в текущей активности, конечно null будет если checkBoxInFirstActivity отсутствует на R.layout.activity_second
Цитата Сообщение от znseday Посмотреть сообщение
CheckBox MyCheckBoxInFirstActivity = (CheckBox)findViewById(R.id.checkBoxInFirstActivity);
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
24.04.2015, 16:37  [ТС]     Доступ к элементам управления одной активности через другую #6
Цитата Сообщение от Spelcrawler Посмотреть сообщение
пишите настройки сразу в sharedPreferencess и никаких проблем
У меня есть главная активность, и в ней есть переменная типа sharedPreferencess. В этой же активности я сохраняю и загружаю настройки. А как передать sharedPreferencess второй активности, чтобы она изменила настройки?

т.е. теоретически, я могу во второй активности сохранить настройки в файл, а затем опять его прочитать в первой активности. Но должен же быть способ проще и быстрее?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
24.04.2015, 17:21     Доступ к элементам управления одной активности через другую #7
sharedPreferencess можешь хоть откуда читать, а если не обязательно сохранять данные м/у запусками приложения, то можно использовать static переменную.
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 653
24.04.2015, 17:45     Доступ к элементам управления одной активности через другую #8
znseday, проще некуда
В одной активити сохраняешь:
Java
1
2
SharedPreferences sp = getPreferences(MODE_PRIVATE);
sp.edit().putString("myStringKey", "Моя строка").putInt("myIntKey", 33).commit();
В любой другой активити этого приложения достаёшь :

Java
1
2
3
SharedPreferences sp = getPreferences(MODE_PRIVATE);
String str = sp.getString("myStringKey", "Строка по умолчанию");
int i = sp.getInt("myIntKey", 0);
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
24.04.2015, 17:56  [ТС]     Доступ к элементам управления одной активности через другую #9
Mikalai, разве
Java
1
sp.edit().putString("myStringKey", "Моя строка").putInt("myIntKey", 33).commit();
не записывает данные в файл? Просто это как-то странно получается обмениваться данными через файл...
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 653
24.04.2015, 18:05     Доступ к элементам управления одной активности через другую #10
Как тут уже писали можешь сделать статик переменную или вызывать активити через интент, правда тогда откроется новое активити( Android - Передача данных с одного Activity на другое Activity )
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
24.04.2015, 18:18  [ТС]     Доступ к элементам управления одной активности через другую #11
Про интенты знаю, спасибо, но как-то муторно. Тем более, что мне желательно не простые типы данных передавать, а объекты. Попробую через статик.
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
24.04.2015, 19:27     Доступ к элементам управления одной активности через другую #12
Тут просто нужно для себя понять такую штуку - активити, это отдельные логические "куски" в архитектуре программы, их желательно делать максимально независимыми друг от друга.

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

На вопрос "а как доступиться к даным, которые в первой активити?" можно ответить так - надо выстроить логику программы так что бы не возникало желания куда-то лезть за этими данными Они должны быть подготовлены и переданы через intent.putExtras()
Это чисто имхо.
http://developer.android.com/guide/faq/framework.html#3
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
24.04.2015, 20:01  [ТС]     Доступ к элементам управления одной активности через другую #13
Паблито, а что вы думаете насчет Singleton class?
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
24.04.2015, 20:07     Доступ к элементам управления одной активности через другую #14
так активити и есть синглтоны по идее
пусть меня поправят если ошибаюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2015, 20:15     Доступ к элементам управления одной активности через другую
Еще ссылки по теме:
Android Передать параметр из одной активити в другую
Как толкнуть одной фигурой другую в методе onDraw Android
Скопировать картинку из одной ImageView в другую ImageView Android
Доступ в БД через авторизационный сервер Android
Android Полный доступ к android в выключенном состоянии через PC?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
znseday
16 / 16 / 1
Регистрация: 20.03.2012
Сообщений: 450
24.04.2015, 20:15  [ТС]     Доступ к элементам управления одной активности через другую #15
если активити это синглинтон, то почему доступ к полям активити может быть только через статик? Что-то я совсем запутался....
Yandex
Объявления
24.04.2015, 20:15     Доступ к элементам управления одной активности через другую
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru