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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
#1

Из одного Activity получить значение другого Activity - Программирование Android

16.09.2013, 11:31. Просмотров 2340. Ответов 13
Метки нет (Все метки)

Запускаю активити:
Java
1
2
3
4
5
public class MainActivity extends Activity {
...
...
Intent intent = new Intent(getBaseContext(), DocsActivity.class);
startActivity(intent);
При создании запущенного активити хочу получить MainActivity для того, чтобы использовать его процедуры.

Пробовал через конструктор второго активити:
Java
1
2
3
4
public DocsActivity(MainActivity mainActivity){
 
    
    }
Скажите, как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 11:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из одного Activity получить значение другого Activity (Программирование Android):

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Android - Передача данных с одного Activity на другое Activity - Программирование Android
Здравствуйте , возникла необходимость получения числовых (int и float ну или double) данных в одном Activity , а обработка и вывод...

Получить Activity другого приложения - Программирование Android
Подскажите пожалуйста, могу ли я из своего приложения получить Activity другого? Или же как можно из своего приложения запустить Activity...

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

Из одной Activity запустить функцию другой Activity - Программирование Android
например есть Activity2 которое я показываю в Dialog окошке, там у меня находятся Date and Time Picker ы (Дата - начало, Дата - окончание)...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
16.09.2013, 11:39 #2
Никак. Используй сервисы.

Что за функции такие которые надо использовать в нескольких активити?
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
16.09.2013, 11:53  [ТС] #3
Цитата Сообщение от haribo Посмотреть сообщение
Никак. Используй сервисы.
Как никак? А почему с одного класса виден активити другого класса?
Вот так например, с первого класса создаю второй:
Java
1
new Class2(this);
Во втором классе:
Java
1
2
3
4
5
6
7
8
public class Class2 extends Activity {
 
    public static MainActivity mainActivity;
 
    public Class2(MainActivity mainActivity) {
 
        this.mainActivity = mainActivity; //получаю активити первого класса
}
Цитата Сообщение от haribo Посмотреть сообщение
Что за функции такие которые надо использовать в нескольких активити?
Ну если у меня уже есть процедура, которая выводит информацию об ошибке и записывать лог, зачем мне в каждой активити ее писать?

А насчет сервисов я почитаю. Пока не знаю что это.
chizz
980 / 494 / 54
Регистрация: 19.03.2013
Сообщений: 3,087
Записей в блоге: 18
Завершенные тесты: 1
16.09.2013, 11:56 #4
Цитата Сообщение от Slon747 Посмотреть сообщение
Ну если у меня уже есть процедура, которая выводит информацию об ошибке и записывать лог, зачем мне в каждой активити ее писать?
Создай отдельный класс, который пишет в лог и юзай его в своих активити.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
16.09.2013, 12:31  [ТС] #5
Цитата Сообщение от chizz Посмотреть сообщение
Создай отдельный класс, который пишет в лог и юзай его в своих активити.
Спасибо. Наверное так и сделаю

Добавлено через 28 минут
Но после выделения процедуры в отдельный класс возникла проблема.

Java
1
LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
LAYOUT_INFLATER_SERVICE заменил на Context.LAYOUT_INFLATER_SERVICE, а вот что делать с getBaseContext() не знаю.
chizz
980 / 494 / 54
Регистрация: 19.03.2013
Сообщений: 3,087
Записей в блоге: 18
Завершенные тесты: 1
16.09.2013, 12:39 #6
А зачем тебе в этой процедуре getBaseContext() ?
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
16.09.2013, 14:25  [ТС] #7
Цитата Сообщение от chizz Посмотреть сообщение
А зачем тебе в этой процедуре getBaseContext() ?
Процедура, размещенная в главном активити показывает всплывающее окно с сообщением:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    // =========================================================
    // Показ всплывающего информационного окна
    // =========================================================
    public void ShowPopup(String message) {
 
        LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
                .getSystemService(LAYOUT_INFLATER_SERVICE);
 
        View popupView = layoutInflater.inflate(R.layout.popup, null);
 
        final PopupWindow popupWindow = new PopupWindow(popupView,
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
 
        TextView iTextView = (TextView) popupView.findViewById(R.id.iTextView);
        iTextView.setText(message);
 
        btnClose.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupWindow.dismiss();
            }
        });
 
        popupWindow.showAtLocation(tvMain, Gravity.TOP, 10, 100);
        popupWindow.setFocusable(true);
        popupWindow.update();
    }
chizz
980 / 494 / 54
Регистрация: 19.03.2013
Сообщений: 3,087
Записей в блоге: 18
Завершенные тесты: 1
16.09.2013, 14:29 #8
Хм... я бы тогда попробовал сделать CustomActivity c этим методом, а остальные Activity от него наследовал.
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
16.09.2013, 14:29 #9
Вот твой метод
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public PopupWindow ShowPopup(String message, Context context, TextView textView) {
 
        LayoutInflater layoutInflater = (LayoutInflater) context
                .getSystemService(LAYOUT_INFLATER_SERVICE);
 
        View popupView = layoutInflater.inflate(R.layout.popup, null);
 
        final PopupWindow popupWindow = new PopupWindow(popupView,
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
 
        textView.setText(message);
        
        popupWindow.showAtLocation(tvMain, Gravity.TOP, 10, 100);
        popupWindow.setFocusable(true);
        popupWindow.update();
    }
Он создает, показывает и возвращает тебе созданный popup window элемент, с которым опосля можешь делать что угодно в этом же потоке (ui).

Далее, онклик на кнопку лучше вешать отдельно, вешать ее в методе не правильно.

Причем я твой метод привязал к абстрактному textview то есть ты можешь указать какое textview использовать в каждом конкретном случае.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
16.09.2013, 21:10  [ТС] #10
Большое спасибо!

Цитата Сообщение от haribo Посмотреть сообщение
Он создает, показывает и возвращает тебе созданный popup window элемент, с которым опосля можешь делать что угодно в этом же потоке (ui).
Я сначала сделал как ты сказал, убрав popupWindow.showAtLocation и добавив в конец "return popupWindow;"
Но потом подумал, а зачем мне опосля что-то с ним делать?

Цитата Сообщение от haribo Посмотреть сообщение
Далее, онклик на кнопку лучше вешать отдельно, вешать ее в методе не правильно.
А почему? Лишний расход ресурсов?
Но я не смог разобраться куда мне втулить обработчик кнопки, если у меня класс без активити.
Подскажи пожалуйста.

Цитата Сообщение от haribo Посмотреть сообщение
Причем я твой метод привязал к абстрактному textview то есть ты можешь указать какое textview использовать в каждом конкретном случае.
Я пока что пожертвовал этим, т.к. пока не понял пользы. Может быть это значит, что в окне сообщения будет размещаться любой View по моему желанию?

В общем, получилось вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void ShowPopup(String message, Context context, View view) {
         
        LayoutInflater layoutInflater = (LayoutInflater) context
                .getSystemService(context.LAYOUT_INFLATER_SERVICE);
 
        View popupView = layoutInflater.inflate(R.layout.popup, null);
 
        final PopupWindow popupWindow = new PopupWindow(popupView,
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
 
        TextView iTextView = (TextView) popupView.findViewById(R.id.iTextView);
        iTextView.setText(message);
        
        popupWindow.showAtLocation(view, Gravity.TOP, 10, 100);
        popupWindow.setFocusable(true);
        popupWindow.update();
    }
Третим параметром указываю View ради showAtLocation().
Но не знаю где разместить OnClick (:
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
17.09.2013, 10:13 #11
Так, смотри, твой метод показывает popup, а это нужно не везде.
Эта кнопка на которую ты вешаешь dismiss она находится внутри popup или эта кнопка на форме activity где popup появляется?
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
17.09.2013, 10:22  [ТС] #12
Цитата Сообщение от haribo Посмотреть сообщение
Так, смотри, твой метод показывает popup, а это нужно не везде.
Но я так и задумывал, чтобы показывать popup при вызове процедуры.
Цитата Сообщение от haribo Посмотреть сообщение
Эта кнопка на которую ты вешаешь dismiss она находится внутри popup или эта кнопка на форме activity где popup появляется?
Кнопка находится внутри popup (описана в лайоте popup.xml).
haribo
41 / 41 / 3
Регистрация: 26.05.2013
Сообщений: 160
17.09.2013, 10:27 #13
Всё, теперь у меня в голове все на своих местах. Пихай онклик в метод.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 423
17.09.2013, 10:33  [ТС] #14
Цитата Сообщение от haribo Посмотреть сообщение
Всё, теперь у меня в голове все на своих местах. Пихай онклик в метод.
Спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 10:33
Привет! Вот еще темы с ответами:

Доступ к БД из другого Activity. - Программирование Android
Очередной нубский вопрос. В главном активити есть dbHelper. Все хорошо. Хочу в одном активити показать результат запроса в виде...

Как вызвать Activity не из Activity? - Программирование Android
Приложение перехватываем входящие СМС. Есть класс унаследованный от BroadcastReceiver, который обозначен в манифесте как приемник...

Создание Activity в другом Activity - Программирование Android
Нормально ли создавать экземпляр какого-либо Activity в текущем Activity? Дело в том, что код, нужный для работы с данными находится в...

Вызов метода из другого Activity - Программирование Android
Здраствуйте. Помогите,пожалуйста, разобраться с несколькими вопросами: 1) Правильно ли, что "Настройки" я выделил в отдельный Activity ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.09.2013, 10:33
Ответ Создать тему
Опции темы

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