Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
1

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

15.05.2014, 19:58. Показов 14714. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание) .

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


может IntentResult - что то типо этого использовать ? или есть методы явно запускающие функции других Activity ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2014, 19:58
Ответы с готовыми решениями:

Вызвать из одной activity функцию другой activity
вызвать из одного activity функцию другой activity Подскажите, можно ли такое реализовать?...

Как добавить cardview в activity с другой activity?
У меня есть активность(1), куда нужно добавить cardview. в этой же активности есть кнопка(1), при...

Как при старте приложения запустить другой Activity ?
Всем привет, ребят подскажите, как при запуске поменять первую запускаемую форму ? То есть чтобы...

Как передать переменную с одной Activity в другой Android Studio
Приветствую, Моя задача такая, Работаю в Android Studio 1.4 У меня есть чекбокс (CheckBox) в...

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

Что вы там замутили? уже не на первый ваш вопрос ответ добавляю )
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 07:40  [ТС] 3
Цитата Сообщение от Igor-vrn Посмотреть сообщение
Что вы там замутили?

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

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

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

или есть другие методы создание глобальных переменных ?
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 08:06 4
А если передавать в конструктор Context?
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 08:15  [ТС] 5
Rube, я с java 3ю неделю только "встречаюсь", сложновато пока не все понятно Если можешь обьясни по подробней как передать

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

Java
1
Intent(Context packageContext, Class A)
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 08:22 6
Это я предположил на вот этот вопрос
Цитата Сообщение от kaspersky Посмотреть сообщение
а есть возможность создания класса поддерживающего getApplicationContext() но не являющимся Activity ?
А запустить функцию другого активити, (т.е. другого класса наверное?) нужно создать экземпляр класса и вызывать его функции. Или определить функцию как static.
Все имхо т.к. чуть больше вашего с java знаком
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 08:29  [ТС] 7
Rube,

на счет создания экземпляра понял, вот например я создал в ActivityB экземпляр Class1 - который должен в ActivityB вывести результат своих действий и автоматический отображать ActivityB , как это возможно реализовать ?
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 09:10 8
Цитата Сообщение от kaspersky Посмотреть сообщение
вот например я создал в ActivityB экземпляр Class1 - который должен в ActivityB вывести результат своих действий и автоматический отображать ActivityB , как это возможно реализовать ?
Непонятно написано, если создается экземпляр класса в ActivityB, то эта активити уже работает же. Что значит: и автоматический отображать ActivityB
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 10:26  [ТС] 9
Цитата Сообщение от Rube Посмотреть сообщение
Что значит: и автоматический отображать ActivityB
Я нажал на кнопку и окрылась ActivityB и там создал экземпляр класса1 (который должен вывести результат действий в ActivityA) и надо сделать так чтобы при выполнении (или после выполнения функций созданного экземпляра) ActivityB должно исчезать а ActivityA появляться с результатом
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 12:09 10
А зачем создавать ActivityB если функции и результат будут в ActivityA? В ActivityB вводятся какие то данные или просто нажимается кнопка?
Как вариант простые данные можно сохранять и читать с помощью sharedpreferences.
Просто логика Вашего приложения не понятна, что допустим делает та или иная активити.
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 13:32  [ТС] 11
Цитата Сообщение от Rube Посмотреть сообщение
В ActivityB вводятся какие то данные или просто нажимается кнопка?
вот например есть у меня активность с таблицой (данные за период скачиваю с веб сервиса ), а я нажимаю на кнопку в этой активности и открывается такое окошко

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



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

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

Добавлено через 37 секунд
самый простой метод наверно в onResume() приписать некей код проверки запуска и т.д. ?
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 13:55 12
Я так понимаю cкачка идет в Asynctask? Тоже пилю типа такого приложение. Может вывести закачку в отдельный класс? А в onPostExecute вставить обновление активности.
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 14:15  [ТС] 13
Цитата Сообщение от Rube Посмотреть сообщение
Я так понимаю cкачка идет в Asynctask? Может вывести закачку в отдельный класс?
Rube, а как это реализовать?

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



Цитата Сообщение от Rube Посмотреть сообщение
Я так понимаю cкачка идет в Asynctask?
Совершенно верно
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 14:26 14
Цитата Сообщение от kaspersky Посмотреть сообщение
т.е. весь код для скачивании инфы в другой класс а потом тока экземпляры создавать чтоли ?)
Ну как бы да, я так сделал у себя потому что еще та простыня получилась в активити, а так более наглядно. Чутка только помучался с context (т.к. наследования то нету Activity), но в итоге получилось через передачу в конструктор.
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 14:32  [ТС] 15
Вот Rube, я тоже хз как с context там быть

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

если у тебя реализовано можешь поделиться ?
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 14:48 16
Лучший ответ Сообщение было отмечено ILNAR_93 как решение

Решение

Класс с активити, вызов 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));
}
...
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
16.05.2014, 14:55  [ТС] 17
Rube, тут как получается, то что скачанные в Asynctask данные надо сохранить в глобальную переменную и потом передать Context в Activity и там уже считывать инфу ? или я опять все напутал ??

Извини если жестко туплю
0
912 / 560 / 88
Регистрация: 13.02.2014
Сообщений: 2,081
16.05.2014, 15:35 18
Ну смотря какие данные, можно через интент передавать, можно в preferences сохранять. Если данных много то сохранять в БД, а после их считывать.
Цитата Сообщение от kaspersky Посмотреть сообщение
и потом передать Context в Activity
это чего не то мне кажется...
1
73 / 73 / 13
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
17.05.2014, 00:31 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.
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
19.05.2014, 10:54  [ТС] 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" >
0
19.05.2014, 10:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2014, 10:54
Помогаю со студенческими работами здесь

Как в Android Studio изменять объект одного Activity из другого Activity?
Есть два Activity, в одном кнопка и элемент editText. Во втором activity есть элемент TextView....

При открытие activity одного приложения предлагает открыть activity другого
При открытие одного activity предлагает открыть activity другого. Package у них разный.

Как изменить кнопку на втором Activity с первого Activity в Android Studio?
Общая задача сделать уровни для игры, по окончанию первого уровня, появляется кнопка &quot;выбор уровня&quot;...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было...


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

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

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