Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
1

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

23.04.2015, 22:37. Просмотров 1766. Ответов 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); // на этой строчке программа вылетает с ошибкой
 
    }     
  
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2015, 22:37
Ответы с готовыми решениями:

Данные не передаются из одной активности в другую
Данные не передаются в другую активность... Вот код: Из: Intent inttt = new...

Передача данных из одной активности в третью
Есть главное активити. Оно вызывает второе, второе самоудаляется vtnjljv...

Изменение настроек приложения из активности в рамках активности
Друзья, помогите разобраться! имею наработки приложения-рисовалки, там есть...

Доступ к элементам Activity из другого класса
Есть Activity, в её классе создаю экземпляр другого класса twoclass tw = new...

Доступ к элементам вью во время создания Activity
Есть Activity. На ней textView. Мне нужно поставить этот textView в...

41
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
28.04.2015, 14:44  [ТС] 21
Люди, а подскажите еще, пожалуйста. Вот я передал во вторую активность кучу данных через интент. Вторая активность их видоизменила. Как мне обратно вернуть эту кучу данных в основную активность? (например, когда пользователь нажмет кнопку со стрелочкой "назад")
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
28.04.2015, 14:54 22
Вообще надо понимать для чего эта "куча данных", от этого и плясать. Вернуть можно сто и одним способом.
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
28.04.2015, 15:02  [ТС] 23
Rube, Например? (Если не через файл)
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
28.04.2015, 15:30 24
Через класс.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
28.04.2015, 15:45 25
Цитата Сообщение от Rube Посмотреть сообщение
Через класс.
Это же опять ерунда получится) Зачем тогда передавать из первой во вторую через интент, если обратно передавать костылем?)
znseday, из первой активити вторую нужно запускать методом startActivityForResult. Во второй активити в методе onBackPressed перед super.onBackPressed(или еще где, что вызывается перед закрытием второй активити) нужно создать новый интент, поместить в него все данные и вызвать метод setResult с новым интентом. Потом в первой активити переопределить метод onActivityResult в этот метод придет интент из второй активити.
1
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
28.04.2015, 15:58 26
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Это же опять ерунда получится)
Ну ТС наверное дотумкается что и первый раз передавать через класс нужно.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
нужно создать новый интент, поместить в него все данные
А ему же объекты надо туда сюда передавать.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
28.04.2015, 16:00 27
Цитата Сообщение от Rube Посмотреть сообщение
А ему же объекты надо туда сюда передавать.
А в чем проблема? В интент можно все что угодно запихнуть. К тому же у ТСа уже получилось:
Цитата Сообщение от znseday Посмотреть сообщение
Вот я передал во вторую активность кучу данных через интент
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
28.04.2015, 16:49  [ТС] 28
Под кучей данных я и имел ввиду один объект, который передаю через интент. Этот вопрос решен.
Spelcrawler, попробую так, хотя не до конца понял, как в OnResultActivity принять интент(
Может, у вас есть под рукой пример или ссылочка на пример?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
28.04.2015, 16:50 29
Цитата Сообщение от znseday Посмотреть сообщение
Может, у вас есть под рукой пример или ссылочка на пример?
Есть)
1
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
29.04.2015, 22:27  [ТС] 30
Всем спасибо! С передачей туда-сюда через интенты разобрался.

Но у меня еще возникла такая идея использования статик-элементов.
Можно же создать базовый класс от активити, например:
Java
1
2
3
public class MyBaseClass extends Activity {
    public static int MegaData;
}
А затем все активити создавать от этого класса, например:
Java
1
2
3
public class SettingsActivity extends MyBaseClass {
// содержимое
}
Тогда вообще не нужно заботится о передаче данных. Переменная MegaData становиться как бы глобальная для всей программы (виджеты и сервисы сейчас не рассматриваю).

Как вам такой подход? Допустимо? Или все равно статик в топку и использовать только интенты?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
30.04.2015, 08:50 31
И зачем столько наследованных активностей нужно?
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
30.04.2015, 09:30 32
znseday, если приложение не большое можно и так, я думаю. Только нужно следить за тем, чтобы эту переменную не меняли когда это не нужно. Все от задачи зависит, но интенты везде хорошо отрабатывают.
0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
30.04.2015, 13:42  [ТС] 33
Rube,
Цитата Сообщение от Rube Посмотреть сообщение
И зачем столько наследованных активностей нужно?
Столько, это сколько? Даже в простейшей программе получается минимум две: на Главную Активность и на Активность с Настройками. В программах среднего объема 3-5 активностей (которые мечтают об общих глобальных переменных) вполне норма.
0
Pablito
2764 / 2196 / 743
Регистрация: 12.05.2014
Сообщений: 7,706
Завершенные тесты: 1
30.04.2015, 13:47 34
какие общие переменные могут быть у активити и активити с настройками?
ну запустилась та, что с настройками - понажимали там что-то, настройки сохранились, вышли из активити, она закрылась...все, профит

в первой активити, там где это требуется обратились к настройкам, вычитали оттуда все что надо, все...профит
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
30.04.2015, 13:51 35
Паблито, а где потом эти настройки сохранять? А где их считывать? А как узнать какая версия настроек новее, та что в памяти, или та что сохранена? Слишком много таких мелочей. Если говорить только про экран настроек - лучше при любом изменении (либо при выходе с экрана настроек) сохранять все в sharedPreferencess. И доступ из любого места, и на диск записано, и быстро.
0
Pablito
2764 / 2196 / 743
Регистрация: 12.05.2014
Сообщений: 7,706
Завершенные тесты: 1
30.04.2015, 13:52 36
так я об этом и говорил, про sharedPreferencess
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
30.04.2015, 13:54 37
Паблито, показалось, что про статичные переменные)
0
Pablito
30.04.2015, 13:55
  #38

Не по теме:

да все уже, я переметнулся в другой лагерь, теперь люблю разные putExtras и shared preferences :D

0
znseday
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 483
30.04.2015, 14:06  [ТС] 39
Цитата Сообщение от Spelcrawler Посмотреть сообщение
а где потом эти настройки сохранять?
в OnPause
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А где их считывать?
в OnCreate или OnResume в зависимости от программы.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
30.04.2015, 14:09 40
znseday, опасно это. OnPause в некоторых случаях может быть не вызван. OnStop не вызывается если первая активити при запуске второй остается в стеке. Итого получаем непредсказуемые значения в этих переменных.
0
30.04.2015, 14:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2015, 14:09

Портирование с одной версии на другую
Добрый вечер, хотелось бы узнать как портировать приложения с версии 4.3 или...

Передать параметр из одной в другую
Добрый вечер. Тут небольшая проблема. Как передать (ID) - С одной...

Перевод из одной системы счисления в другую
Есть скрипт на javascript <script language="JavaScript"> b=...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

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