Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
XXX15
0 / 0 / 0
Регистрация: 29.02.2016
Сообщений: 34
1

Передача данных из FragmentDialog в Activity

28.11.2017, 16:30. Просмотров 773. Ответов 2

Здравствуйте! Подскажите, пожалуйста, как мне передать переменные size, difficulty, withWalls в activity, из которого вызывался диалог?

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.example.ivan.game2048;
 
 
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioGroup;
 
public class MyDialogFragment extends DialogFragment {
 
    private static MyDialogFragment myDialogFragment;
 
    private RadioGroup sizeBoard;
    private RadioGroup difficultyRadio;
    private CheckBox withWallsBox;
    private Button applyButton;
    private Button closeButton;
 
    private int size;
    private Difficulty difficulty;
    private boolean withWalls;
 
    public static MyDialogFragment newInstance(int layout) {
        myDialogFragment = new MyDialogFragment();
 
        Bundle args = new Bundle();
        args.putInt("layout", layout);
        myDialogFragment.setArguments(args);
 
        return myDialogFragment;
    }
 
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.dialog_menu, null);
        builder.setView(view);
        sizeBoard = view.findViewById(R.id.sizesField);
 
        sizeBoard.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
 
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.size4x4:
                        size = 4;
                        break;
                    case R.id.size5x5:
                        size = 5;
                        break;
                    case R.id.size6x6:
                        size = 6;
                        break;
                    case R.id.size8x8:
                        size = 8;
                        break;
                    default:
                        break;
                }
            }
        });
 
        difficultyRadio = view.findViewById(R.id.difficulty);
 
        difficultyRadio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
 
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.easy:
                        difficulty = Difficulty.easy;
                        break;
                    case R.id.normal:
                        difficulty = Difficulty.normal;
                        break;
                    case R.id.hard:
                        difficulty = Difficulty.hard;
                        break;
                    default:
                        break;
                }
            }
        });
 
        withWallsBox = view.findViewById(R.id.withWalls);
        applyButton = view.findViewById(R.id.apply);
        closeButton = view.findViewById(R.id.btnClose);
 
        applyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                withWalls = withWallsBox.isChecked();
                dismiss();
 
            }
        });
 
        closeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
 
        return builder.create();
    }
 
}
Так я вызываю в activity:
Java
1
2
3
FragmentManager manager = getSupportFragmentManager();
MyDialogFragment myDialogFragment = MyDialogFragment.newInstance(R.layout.dialog_menu);
myDialogFragment.show(manager, "dialog");
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2017, 16:30
Ответы с готовыми решениями:

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

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

Передача данных из Activity в Fragment
Есть основной класс (puplic class ViewContact) в котором есть фрагменты (public static class...

Передача данных из activity в service
Здравствуйте, как можно организовать передачу данных из activity в сервис, если сервис уже запущен...

Передача данных между Activity
Доброго времени суток, господа. Такой вопрос: с точки зрения ООП програмирования и...

2
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,824
Завершенные тесты: 1
28.11.2017, 16:45 2
Лучший ответ Сообщение было отмечено XXX15 как решение

Решение

как вариант создать интерфейс
Java
1
2
3
    interface Callback {
        void onApplyClicked(int size, Difficulty difficulty, boolean withWalls);
    }
добавит пару строк сюда
Java
1
2
3
4
5
6
7
8
9
10
11
        applyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                withWalls = withWallsBox.isChecked();
                FragmentActivity activity = getActivity();
                if (activity != null && activity instanceof Callback) {
                    ((Callback) activity).onApplyClicked(size, difficulty, withWalls);
                }
                dismiss();
            }
        });
и в какой-то там активити, в которую надо возвращать результат, имплементировать интерфейс Callback
0
XXX15
0 / 0 / 0
Регистрация: 29.02.2016
Сообщений: 34
28.11.2017, 16:56  [ТС] 3
Pablito, спасибо большое!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2017, 16:56

Передача данных между activity
Здравствуйте! Для передачи данных между Activity требуется Пользователь вводит данные в...

Передача данных между тремя Activity
Доброго времени суток! у меня тут проблемка, связанная с Intent'ами, помогите разобраться. Есть 3...

Передача данных из первого activity во второй и сохранения getSharedPreferences
Всем привет. Есть 2 activity, хочу передать данные из первого activity во второе. Данные...


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

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

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