Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
1

Из одного Activity получить значение другого Activity

16.09.2013, 11:31. Просмотров 3064. Ответов 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){
 
    
    }
Скажите, как это сделать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 11:31
Ответы с готовыми решениями:

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

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

Как из одного Activity перенести фотку в другое Activity?
Собственно необходимо отобразить фотографию в activity2, которую загрузили в activity1 из галереи ...

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

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

13
StudAssistant
Эксперт
9811 / 7003 / 2319
Регистрация: 17.04.2006
Сообщений: 9,622
16.09.2013, 11:31
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
13
haribo
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
16.09.2013, 11:39 2
Никак. Используй сервисы.

Что за функции такие которые надо использовать в нескольких активити?
0
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
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 Посмотреть сообщение
Что за функции такие которые надо использовать в нескольких активити?
Ну если у меня уже есть процедура, которая выводит информацию об ошибке и записывать лог, зачем мне в каждой активити ее писать?

А насчет сервисов я почитаю. Пока не знаю что это.
0
chizz
985 / 506 / 102
Регистрация: 19.03.2013
Сообщений: 3,108
Записей в блоге: 19
Завершенные тесты: 1
16.09.2013, 11:56 4
Цитата Сообщение от Slon747 Посмотреть сообщение
Ну если у меня уже есть процедура, которая выводит информацию об ошибке и записывать лог, зачем мне в каждой активити ее писать?
Создай отдельный класс, который пишет в лог и юзай его в своих активити.
0
16.09.2013, 11:56
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
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() не знаю.
0
chizz
985 / 506 / 102
Регистрация: 19.03.2013
Сообщений: 3,108
Записей в блоге: 19
Завершенные тесты: 1
16.09.2013, 12:39 6
А зачем тебе в этой процедуре getBaseContext() ?
0
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
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();
    }
0
chizz
985 / 506 / 102
Регистрация: 19.03.2013
Сообщений: 3,108
Записей в блоге: 19
Завершенные тесты: 1
16.09.2013, 14:29 8
Хм... я бы тогда попробовал сделать CustomActivity c этим методом, а остальные Activity от него наследовал.
0
haribo
41 / 41 / 0
Регистрация: 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 использовать в каждом конкретном случае.
1
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
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 (:
0
haribo
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
17.09.2013, 10:13 11
Так, смотри, твой метод показывает popup, а это нужно не везде.
Эта кнопка на которую ты вешаешь dismiss она находится внутри popup или эта кнопка на форме activity где popup появляется?
0
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
17.09.2013, 10:22  [ТС] 12
Цитата Сообщение от haribo Посмотреть сообщение
Так, смотри, твой метод показывает popup, а это нужно не везде.
Но я так и задумывал, чтобы показывать popup при вызове процедуры.
Цитата Сообщение от haribo Посмотреть сообщение
Эта кнопка на которую ты вешаешь dismiss она находится внутри popup или эта кнопка на форме activity где popup появляется?
Кнопка находится внутри popup (описана в лайоте popup.xml).
0
haribo
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
17.09.2013, 10:27 13
Всё, теперь у меня в голове все на своих местах. Пихай онклик в метод.
1
Slon747
59 / 37 / 2
Регистрация: 24.08.2013
Сообщений: 540
17.09.2013, 10:33  [ТС] 14
Цитата Сообщение от haribo Посмотреть сообщение
Всё, теперь у меня в голове все на своих местах. Пихай онклик в метод.
Спасибо
0
17.09.2013, 10:33
StackOverflow
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 10:33

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

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

Как в Navigation Drawer Activity засунуть Activity?
Здравствуйте! у меня такая проблема navigation drawer activity работает только с фрагментами как...


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

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

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