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

Из одной Activity запустить функцию другой Activity - Android

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.93
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
15.05.2014, 19:58     Из одной Activity запустить функцию другой Activity #1
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание) .

а в Activity1 у меня таблица с данными которое берется с веб сервиса (данные с одной даты до другой даты) как сделать так чтобы когда я из Activity1 открываю Dialog окно с Activity2 и там нажимаю кнопку "применить" в Activity1 началась выполняться функция получение данных с веб сервиса (т.е. обновление таблицы, скачивать данные с указанным интервалом времени) ...


может IntentResult - что то типо этого использовать ? или есть методы явно запускающие функции других Activity ?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2014, 19:58     Из одной Activity запустить функцию другой Activity
Посмотрите здесь:

Android Как при старте приложения запустить другой Activity ?
Из одного Activity получить значение другого Activity Android
Как вызвать Activity не из Activity? Android
Как запустить метод в Activity из BroadcastReceiver Android
Android Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
Android Android - Передача данных с одного Activity на другое Activity
Изменение layout-элементов одного activity из другого activity Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Igor-vrn
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 93
16.05.2014, 01:02     Из одной Activity запустить функцию другой Activity #2
Есть запрос ActivityForResult, о котором вы говорили, но это решение не самое уместное здесь. Честно говоря, с трудом представляю как тут можно сделать запросом Intent. В вашем случае, я бы делал сторонние от Activity классы. Особенно для обращения к веб-сервисам. Их вообще принято в отдельном потоке делать, дабы приложение не зависло.
Активности в некотором смысле муторные. Например, при повороте жизненный цикл активности переживает уничтожение и новое создание. Представьте, активность во всю живет, обрабатывает данные пользователя и тут чувак из удобства ввода поворачивает телефон и все данные улетели. Есть решения типа onResume, onStop и т.д. отвечающие за жизненный цикл, но на деле получается не очень прозрачно.
Если ваши данные обрабатываются разными активностями, то рекомендую создать свой собственный класс для хранения данных таблицы, а активность - это для пользователей. Графический интерфейс, чтобы человек мог что-то увидеть и что-то поменять.
Насколько я понял, активности редко обременяют большим количеством функций. Это штуки, управляющие жизненным циклом приложения и как GUI (графический интерфейс).

Что вы там замутили? уже не на первый ваш вопрос ответ добавляю )
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 07:40  [ТС]     Из одной Activity запустить функцию другой Activity #3
Цитата Сообщение от Igor-vrn Посмотреть сообщение
Что вы там замутили?

Прога для отображения отчёта)

Добавлено через 8 минут
Цитата Сообщение от Igor-vrn Посмотреть сообщение
я бы делал сторонние от Activity классы
мне нужно работать с глобальными переменными, методом
globalvar appState = ((globalvar) getApplicationContext());

а есть возможность создания класса поддерживающего getApplicationContext() но не являющимся Activity ?

или есть другие методы создание глобальных переменных ?
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 08:06     Из одной Activity запустить функцию другой Activity #4
А если передавать в конструктор Context?
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 08:15  [ТС]     Из одной Activity запустить функцию другой Activity #5
Rube, я с java 3ю неделю только "встречаюсь", сложновато пока не все понятно Если можешь обьясни по подробней как передать

что то типо этого чтоли ?

Java
1
Intent(Context packageContext, Class A)
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 08:22     Из одной Activity запустить функцию другой Activity #6
Это я предположил на вот этот вопрос
Цитата Сообщение от kaspersky Посмотреть сообщение
а есть возможность создания класса поддерживающего getApplicationContext() но не являющимся Activity ?
А запустить функцию другого активити, (т.е. другого класса наверное?) нужно создать экземпляр класса и вызывать его функции. Или определить функцию как static.
Все имхо т.к. чуть больше вашего с java знаком
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 08:29  [ТС]     Из одной Activity запустить функцию другой Activity #7
Rube,

на счет создания экземпляра понял, вот например я создал в ActivityB экземпляр Class1 - который должен в ActivityB вывести результат своих действий и автоматический отображать ActivityB , как это возможно реализовать ?
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 09:10     Из одной Activity запустить функцию другой Activity #8
Цитата Сообщение от kaspersky Посмотреть сообщение
вот например я создал в ActivityB экземпляр Class1 - который должен в ActivityB вывести результат своих действий и автоматический отображать ActivityB , как это возможно реализовать ?
Непонятно написано, если создается экземпляр класса в ActivityB, то эта активити уже работает же. Что значит: и автоматический отображать ActivityB
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 10:26  [ТС]     Из одной Activity запустить функцию другой Activity #9
Цитата Сообщение от Rube Посмотреть сообщение
Что значит: и автоматический отображать ActivityB
Я нажал на кнопку и окрылась ActivityB и там создал экземпляр класса1 (который должен вывести результат действий в ActivityA) и надо сделать так чтобы при выполнении (или после выполнения функций созданного экземпляра) ActivityB должно исчезать а ActivityA появляться с результатом
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 12:09     Из одной Activity запустить функцию другой Activity #10
А зачем создавать ActivityB если функции и результат будут в ActivityA? В ActivityB вводятся какие то данные или просто нажимается кнопка?
Как вариант простые данные можно сохранять и читать с помощью sharedpreferences.
Просто логика Вашего приложения не понятна, что допустим делает та или иная активити.
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 13:32  [ТС]     Из одной Activity запустить функцию другой Activity #11
Цитата Сообщение от Rube Посмотреть сообщение
В ActivityB вводятся какие то данные или просто нажимается кнопка?
вот например есть у меня активность с таблицой (данные за период скачиваю с веб сервиса ), а я нажимаю на кнопку в этой активности и открывается такое окошко

Кликните здесь для просмотра всего текста
[]http://www.htcdev.com/images/uploads/DatePicker.png[/]



я в нем поменял дату и нажал "Ок", далее она закрывается, и нужно в активности с таблицой запустить функцию с параметрами которая скачивает данные с веб сервиса

мне тупо нужно запустить функцию, я уж час думаю в onResume() делать проверку на изменение даты и там запускать функцию

Добавлено через 37 секунд
самый простой метод наверно в onResume() приписать некей код проверки запуска и т.д. ?
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 13:55     Из одной Activity запустить функцию другой Activity #12
Я так понимаю cкачка идет в Asynctask? Тоже пилю типа такого приложение. Может вывести закачку в отдельный класс? А в onPostExecute вставить обновление активности.
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 14:15  [ТС]     Из одной Activity запустить функцию другой Activity #13
Цитата Сообщение от Rube Посмотреть сообщение
Я так понимаю cкачка идет в Asynctask? Может вывести закачку в отдельный класс?
Rube, а как это реализовать?

т.е. весь код для скачивании инфы в другой класс а потом тока экземпляры создавать чтоли ?)



Цитата Сообщение от Rube Посмотреть сообщение
Я так понимаю cкачка идет в Asynctask?
Совершенно верно
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 14:26     Из одной Activity запустить функцию другой Activity #14
Цитата Сообщение от kaspersky Посмотреть сообщение
т.е. весь код для скачивании инфы в другой класс а потом тока экземпляры создавать чтоли ?)
Ну как бы да, я так сделал у себя потому что еще та простыня получилась в активити, а так более наглядно. Чутка только помучался с context (т.к. наследования то нету Activity), но в итоге получилось через передачу в конструктор.
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 14:32  [ТС]     Из одной Activity запустить функцию другой Activity #15
Вот Rube, я тоже хз как с context там быть

как это правильно передать ?

если у тебя реализовано можешь поделиться ?
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 14:48     Из одной Activity запустить функцию другой Activity #16
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Класс с активити, вызов GetFromUrl
Java
1
new GetFromUrl(this).execute(ch);
Класс с AsyncTask
Java
1
2
3
4
5
6
7
8
9
10
11
12
Public class GetFromUrl extends AsyncTask<ArrayList<String>, Integer, String[][]> {
    private Context context;
 
public GetFromUrl(Context context) { // Это конструктор, куда передаю context   
    this.context = context;
}
 
protected void onPostExecute(String[][] result) {
 // запуск другой активити, тут и пригодился context
   this.context.startActivity(new Intent(this.context, Activity2.class));
}
...
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
16.05.2014, 14:55  [ТС]     Из одной Activity запустить функцию другой Activity #17
Rube, тут как получается, то что скачанные в Asynctask данные надо сохранить в глобальную переменную и потом передать Context в Activity и там уже считывать инфу ? или я опять все напутал ??

Извини если жестко туплю
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,064
16.05.2014, 15:35     Из одной Activity запустить функцию другой Activity #18
Ну смотря какие данные, можно через интент передавать, можно в preferences сохранять. Если данных много то сохранять в БД, а после их считывать.
Цитата Сообщение от kaspersky Посмотреть сообщение
и потом передать Context в Activity
это чего не то мне кажется...
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
17.05.2014, 00:31     Из одной Activity запустить функцию другой Activity #19
Можно например в Activity2 написать public static long data1, data2;
потом в Activity1 написать
Activity2.data1 = дата1_которая_у_вас_в_активити1
Activity2.data2 = дата2_которая_у_вас_в_активити1
startActivityForResult(new Intent(this, Activity2.class), requestCode);
и в onActivityResult(int, int, Intent) если вернуло RESULT_OK, то опять попользоваться статическими переменными, чтобы получить результат.
В пределах приложения вполне можно использовать статические переменные для удобной передачи данных.
Ещё имхо весьма важно смотреть на Activity как на элемент интерфейса (типа очень навороченная картинка с кнопками, текстами, процедурами итд), а данные хранить отдельно (напоминает архитектуру Document-View).

Добавлено через 8 минут
Если продолжить мысль про Document-View то и вовсе формировать данные можно как угодно, в том числе в Activity2 а Activity1 просто будет, допустим onStart отображать эти данные, например из статического члена приложения или даже Activity, из базы данных, из SharedPreferences.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2014, 10:54     Из одной Activity запустить функцию другой Activity
Еще ссылки по теме:

Как передать переменную с одной Activity в другой Android Studio Android
Создание Activity в другом Activity Android
Android Переход на другой Activity
Android Вызвать из одной activity функцию другой activity
Android Два onActivityResult в одной Activity

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

Или воспользуйтесь поиском по форуму:
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,522
Записей в блоге: 2
19.05.2014, 10:54  [ТС]     Из одной Activity запустить функцию другой Activity #20
Rube,
Для моего случая (Глобальные переменные (Может и не совсем правильный метод для хранения глоб. переменных) )

я нашел след.: (если даже нету наследования от Activity)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MyApplication extends Application {
 
    private static Context mContext;
 
    @Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }
 
    public static Context getContext() {
        return mContext;
    }
}
 
Используешь так:  MyApplication.getContext()
 
Манифест файл
XML
1
2
3
4
<application
    android:name=".MyApplication"
    android:icon="@drawable/icon"
    android:label="@string/app_name" >
Yandex
Объявления
19.05.2014, 10:54     Из одной Activity запустить функцию другой Activity
Ответ Создать тему
Опции темы

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