Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
талраш
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 33
#1

Отправка данных из dialogfragment в активити в котором был создан диалог - Программирование Android

30.09.2016, 13:19. Просмотров 299. Ответов 10
Метки нет (Все метки)

Здравствуйте. Нужна помощь. Как сделать так что при нажатии кнопки btnmodal в диалоге, в активити, которая вызвала диалог менялась текствью price, прибавлялось число из тесктвью pricemodal в диалоге.
Код диалога:
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
28
29
30
31
32
33
34
35
36
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
 
 
public class Dialog1 extends DialogFragment implements OnClickListener {
public TextView pricemodal;
    public Button modal;
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View modal = inflater.inflate(R.layout.modal_fragment, null);
        pricemodal =(TextView)modal.findViewById(R.id.pricemodal);
        modal.findViewById(R.id.btnmodal).setOnClickListener(this);
        return modal;
    }
    
    public void onClick(View v) {
 
        dismiss();
    }
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
 
    }
    public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
 
    }
 
}
код активити:
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
28
29
30
31
32
33
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.app.DialogFragment;
import android.view.View;
import android.widget.TextView;
 
 
public class Order extends Activity{
 
    DialogFragment modal;
    public int sum;
    public TextView price;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.order);
        modal= new Dialog1();
 
    }
    public void next(View view) {
        Intent intent = new Intent(Order.this, orderCondition.class);
        startActivity(intent);
        finish();
    }
 
    public void onClick(View v) {
        modal.show(getFragmentManager(), "Dialog1");
    }
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2016, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отправка данных из dialogfragment в активити в котором был создан диалог (Программирование Android):

Обновление карты из DialogFragment, без обновления активити? - Программирование Android
Подскажите пожалуйста, есть MapsActivity в нем вызывается Dialog в нем вставляю координаты нажимаю ок, передаю координаты в переменные...

Как передавать динамические данные (координаты GPS) из активити в диалог? - Программирование Android
Здравствуйте Уважаемые! :senor: подскажите пожалуйста, есть класс активити в котором описана работа с GPS, и мне нужно вызывать диалог...

Получение данных из DialogFragment - Программирование Android
Добрый день. Задача: получать данные из DialogFragment. Диалог вызывается из ActionBar. Используется для добавления записи в БД. Надо...

Попытка доступа к элементу не из того потока, в котором он был создан - C#
Имею такой код: string strRegex8 = @"Проведено боёв: </td>\s*<*tdclass=""td-number""> 7 (?<Number>*+)*</td>"; ...

Доступ к элементу управления не из того потока, в котором он был создан - Visual Basic .NET
Добрый день. При клике по кнопкам создаются новые формы, хочу сделать чтобы по таймеру в этих формах происходили изменения, но...

Ошибка доступ к элементу ProgressBar не из того потока, в котором он был создан - C#
Здравствуйте друзья. Cross-thread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created...

10
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,713
30.09.2016, 13:39 #2
талраш, не особо углубляясь в код - сделайте одним из полей диалога ссылку на тот элемент в родителе который вы хотите менять - очевидно что ссылка будет верной - ведь родитель не мог погибнуть раньше чем потомок - просто при создании диалога давайте ему эту ссылку
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
30.09.2016, 15:13 #3
А вот еще один плюс использования фрагментов в активити, даже если он там всего один (мало ли что в будущем потребуется). Есть такой метод для диалога:

Java
1
dialog.setTargetFragment(this, REQUEST_DIALOG);
И потом в диалоге:

Java
1
2
Intent intent = new Intent();
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, intent);
И в onActivityResult ловим любые данные из диалога.

Добавлено через 2 минуты
Можно еще к DialogFragment интерфейс прикрутить. Но если вернуть надо только одно значение, то оптимальней конечно как vxg пишет.
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
30.09.2016, 15:19 #4
на интерфейсе красиво, нужный код студия даже генерит автоматом
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
28
29
30
31
public class BlankFragment extends DialogFragment {
 
    private OnFragmentInteractionListener listener;
 
    public BlankFragment() {
    }
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle s) {
        return inflater.inflate(R.layout.fragment_blank, container, false);
    }
 
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            listener = (OnFragmentInteractionListener) context;
        }
    }
 
    @Override
    public void onDetach() {
        super.onDetach();
        listener = null;
    }
 
    public interface OnFragmentInteractionListener {
        void onFragmentInteraction(String ololoField);
    }
}
этот интерфейс, который книзу кода фрагмента, реализовывает активити
все, профит
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
30.09.2016, 15:26 #5
Вроде onAttach в последнее время deprecated, не? Хотя не принципиально, интерфейс все равно можно сделать
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
30.09.2016, 15:36 #6
deprecated тот который на вход принимает активити, а не контекст
я вообще х.з. кто его использовал
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
30.09.2016, 19:43 #7
Цитата Сообщение от Паблито Посмотреть сообщение
нужный код студия даже генерит автоматом
Подскажи плз
0
Pablito
2534 / 2013 / 627
Регистрация: 12.05.2014
Сообщений: 7,066
Завершенные тесты: 1
30.09.2016, 20:49 #8
дык как обычно все
Отправка данных из dialogfragment в активити в котором был создан диалогОтправка данных из dialogfragment в активити в котором был создан диалог
ну и весь лишний нагенерированный мусор удалить, пример я выше приводил
остается только в активити прописать implements OnFragmentInteractionListener
1
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
30.09.2016, 21:28 #9
Чет я проглядел этот момент Спс.
0
талраш
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 33
01.10.2016, 14:07  [ТС] #10
А можешь дописать что и куда именно дописать нужно, а то я попробовал и не работает, и не могу разобраться что не так
0
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
01.10.2016, 14:17 #11
Паблито же нарисовал все...
0
01.10.2016, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2016, 14:17
Привет! Вот еще темы с ответами:

Попытка доступа к элементу управления не из того потока, в котором он был создан - C#
Здравствуйте, уважаемые знатоки. Помогите, плиз, с задачкой. Иначе я сломаю комп до того, как он сломает мне мозг ))) Почему-то...

Изменение свойств компонента из класса в котором не был создан этот компонент - Visual Basic .NET
Требуется изменить текст на кнопке с помощью вызова процедуры из другого класса в новом потоке. Рабочий код без нового потока: ...

Com port попытка доступа к элементу управления не из того потока, в котором он был создан - C#
попытка доступа к элементу управления 'label2' не из того потока, в котором он был создан. Собственно, впытаюсь получить значения с ком...

Попытка доступа к элементу управления 'label2' не из того потока, в котором он был создан - C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...


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

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

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