Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
1

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

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

Author24 — интернет-сервис помощи студентам
Имеется две активности. Когда запускаю вторую активность, первую не выгружаю (не удаляю).
Можно ли сделать так, чтобы вторая активность имела доступ к элементам управления первой активности?
Я пробовал, например так:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2015, 22:37
Ответы с готовыми решениями:

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

Доступ к элементам, элемента управления Список
Подскажите, как обратится и получить значения всех элементов , элемента управления Список(ListBox)...

разрешить/запретить доступ к элементам управления (.Enable)
Здравствуйте. Есть форма Железная дорога. Мне нужно чтобы при запуске формы все поля формы (включая...

Доступ к элементам управления другого приложения. Часть 2
Здраствуйте! Управляю программой на Delphi, не могу понять одну вещь. На форме приложения есть...

41
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
28.04.2015, 14:44  [ТС] 21
Author24 — интернет-сервис помощи студентам
Люди, а подскажите еще, пожалуйста. Вот я передал во вторую активность кучу данных через интент. Вторая активность их видоизменила. Как мне обратно вернуть эту кучу данных в основную активность? (например, когда пользователь нажмет кнопку со стрелочкой "назад")
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
28.04.2015, 14:54 22
Вообще надо понимать для чего эта "куча данных", от этого и плясать. Вернуть можно сто и одним способом.
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
28.04.2015, 15:02  [ТС] 23
Rube, Например? (Если не через файл)
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
28.04.2015, 15:30 24
Через класс.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
28.04.2015, 15:45 25
Цитата Сообщение от Rube Посмотреть сообщение
Через класс.
Это же опять ерунда получится) Зачем тогда передавать из первой во вторую через интент, если обратно передавать костылем?)
znseday, из первой активити вторую нужно запускать методом startActivityForResult. Во второй активити в методе onBackPressed перед super.onBackPressed(или еще где, что вызывается перед закрытием второй активити) нужно создать новый интент, поместить в него все данные и вызвать метод setResult с новым интентом. Потом в первой активити переопределить метод onActivityResult в этот метод придет интент из второй активити.
1
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
28.04.2015, 15:58 26
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Это же опять ерунда получится)
Ну ТС наверное дотумкается что и первый раз передавать через класс нужно.
Цитата Сообщение от Spelcrawler Посмотреть сообщение
нужно создать новый интент, поместить в него все данные
А ему же объекты надо туда сюда передавать.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
28.04.2015, 16:00 27
Цитата Сообщение от Rube Посмотреть сообщение
А ему же объекты надо туда сюда передавать.
А в чем проблема? В интент можно все что угодно запихнуть. К тому же у ТСа уже получилось:
Цитата Сообщение от znseday Посмотреть сообщение
Вот я передал во вторую активность кучу данных через интент
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
28.04.2015, 16:49  [ТС] 28
Под кучей данных я и имел ввиду один объект, который передаю через интент. Этот вопрос решен.
Spelcrawler, попробую так, хотя не до конца понял, как в OnResultActivity принять интент(
Может, у вас есть под рукой пример или ссылочка на пример?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
28.04.2015, 16:50 29
Цитата Сообщение от znseday Посмотреть сообщение
Может, у вас есть под рукой пример или ссылочка на пример?
Есть)
1
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
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
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
30.04.2015, 08:50 31
И зачем столько наследованных активностей нужно?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
30.04.2015, 09:30 32
znseday, если приложение не большое можно и так, я думаю. Только нужно следить за тем, чтобы эту переменную не меняли когда это не нужно. Все от задачи зависит, но интенты везде хорошо отрабатывают.
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
30.04.2015, 13:42  [ТС] 33
Rube,
Цитата Сообщение от Rube Посмотреть сообщение
И зачем столько наследованных активностей нужно?
Столько, это сколько? Даже в простейшей программе получается минимум две: на Главную Активность и на Активность с Настройками. В программах среднего объема 3-5 активностей (которые мечтают об общих глобальных переменных) вполне норма.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
30.04.2015, 13:47 34
какие общие переменные могут быть у активити и активити с настройками?
ну запустилась та, что с настройками - понажимали там что-то, настройки сохранились, вышли из активити, она закрылась...все, профит

в первой активити, там где это требуется обратились к настройкам, вычитали оттуда все что надо, все...профит
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
30.04.2015, 13:51 35
Паблито, а где потом эти настройки сохранять? А где их считывать? А как узнать какая версия настроек новее, та что в памяти, или та что сохранена? Слишком много таких мелочей. Если говорить только про экран настроек - лучше при любом изменении (либо при выходе с экрана настроек) сохранять все в sharedPreferencess. И доступ из любого места, и на диск записано, и быстро.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
30.04.2015, 13:52 36
так я об этом и говорил, про sharedPreferencess
1
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
30.04.2015, 13:54 37
Паблито, показалось, что про статичные переменные)
0
Pablito
30.04.2015, 13:55
  #38

Не по теме:

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

0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 570
30.04.2015, 14:06  [ТС] 39
Цитата Сообщение от Spelcrawler Посмотреть сообщение
а где потом эти настройки сохранять?
в OnPause
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А где их считывать?
в OnCreate или OnResume в зависимости от программы.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
30.04.2015, 14:09 40
znseday, опасно это. OnPause в некоторых случаях может быть не вызван. OnStop не вызывается если первая активити при запуске второй остается в стеке. Итого получаем непредсказуемые значения в этих переменных.
0
30.04.2015, 14:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2015, 14:09
Помогаю со студенческими работами здесь

Доступ к элементам управления (DGW, ListBox) из потоков
Под элементами управления имею в виду datgaridview, listbox и т.д. В общем подскажите в какую...

Как получить доступ к элементам управления другой формы
как можно получит значение элементов первой формы если в проекте 2 формы Form1 f = new Form1();...

Доступ к элементам одной формы из другой
Господа! надо из одной формы менять свойства, например, кнопки, находящейся на другой форме! как в...

Доступ из одной формы к элементам другой
Всем Привет. Я создал главную форму Form1. И вот так создал дочернюю форму Form2 ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru