Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
hossen
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 70
1

Пишу программу-тест, нужна консультация

12.02.2018, 13:43. Просмотров 265. Ответов 8
Метки нет (Все метки)

Всем привет, прошу подсказать андройдовскому юнцу))
Взялся писать тест (типа психологичекий) и столкнулся с небольшой проблемкой.
Мне нужно из фрагмента передать в активити результат выбранной радиобаттно в виде числа, для дальнейшей обработки. Но никак не могу найти как и фрагмента передать.
Вот код активити:
Javascript
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
115
116
117
118
119
public class MainActivity extends FragmentActivity  {
 
    Button bAdd;
 
 
 
    private int mCount = 0;
 
    Vopros1 frag1;
    Vopros2 frag2;
    Vopros3 frag3;
    Vopros4 frag4;
    Vopros5 frag5;
    Vopros6 frag6;
    Vopros7 frag7;
    Vopros8 frag8;
    Vopros9 frag9;
    Vopros10 frag10;
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        FragmentTransaction fragmentManager = getSupportFragmentManager().beginTransaction();
        fragmentManager.replace(R.id.container, new Vopros1());
        fragmentManager.commit();
 
        frag1 = new Vopros1();
        frag2 = new Vopros2();
        frag3 = new Vopros3();
        frag4 = new Vopros4();
        frag5 = new Vopros5();
        frag6 = new Vopros6();
        frag7 = new Vopros7();
        frag8 = new Vopros8();
        frag9 = new Vopros9();
        frag10 = new Vopros10();
 
        bAdd = (Button) findViewById(R.id.bAdd);
        bAdd.setOnClickListener(new View.OnClickListener() {
 
            @Override
            public void onClick(View v) {
 
                ++ mCount;
 
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
 
 
 
 
                if (mCount == 1) {
 
                    fragmentTransaction.replace(R.id.container, frag2);
 
                } else if (mCount == 2) {
 
                    fragmentTransaction.replace(R.id.container, frag3);
 
                } else if (mCount == 3) {
 
                    fragmentTransaction.replace(R.id.container, frag4);
 
                } else if (mCount == 4) {
 
                    fragmentTransaction.replace(R.id.container, frag5);
 
                } else if (mCount == 5) {
 
                    fragmentTransaction.replace(R.id.container, frag6);
 
                } else if (mCount == 6) {
 
                    fragmentTransaction.replace(R.id.container, frag7);
 
                } else if (mCount == 7) {
 
                    fragmentTransaction.replace(R.id.container, frag8);
 
                } else if (mCount == 8) {
 
                    fragmentTransaction.replace(R.id.container, frag9);
 
                } else if (mCount == 9) {
 
                    fragmentTransaction.replace(R.id.container, frag10);
 
                } else if (mCount == 10) {
 
                    Intent intent = new Intent(MainActivity.this, Otvet.class);
                    startActivity(intent);
 
                }
 
                fragmentTransaction.commit();
 
            }
 
 
 
 
 
        });
 
 
 
 
 
 
    }
 
 
 
 
}
код фрагмента:
Javascript
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
public class Vopros1 extends Fragment implements RadioGroup.OnCheckedChangeListener {
 
    TextView textView;
    RadioGroup radioGroup;
 
 
    private RadioButton radioButton1;
    private RadioButton radioButton2;
    private RadioButton radioButton3;
    private RadioButton radioButton4;
    private RadioButton radioButton5;
    private RadioButton radioButton6;
    private RadioButton radioButton7;
 
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View rootView = inflater.inflate(R.layout.vopros1, container, false);
 
        String[] texts = getResources().getStringArray(R.array.texts);
 
 
        radioButton1 = (RadioButton) rootView.findViewById(R.id.radioButton1);
        radioButton1.setText(texts[0]);
        radioButton2 = (RadioButton) rootView.findViewById(R.id.radioButton2);
        radioButton2.setText(texts[1]);
        radioButton3 = (RadioButton) rootView.findViewById(R.id.radioButton3);
        radioButton3.setText(texts[2]);
        radioButton4 = (RadioButton) rootView.findViewById(R.id.radioButton4);
        radioButton4.setText(texts[3]);
        radioButton5 = (RadioButton) rootView.findViewById(R.id.radioButton5);
        radioButton5.setText(texts[4]);
        radioButton6 = (RadioButton) rootView.findViewById(R.id.radioButton6);
        radioButton6.setText(texts[5]);
        radioButton7 = (RadioButton) rootView.findViewById(R.id.radioButton7);
        radioButton7.setText(texts[6]);
 
        textView = (TextView) rootView.findViewById(R.id.textView);
 
        radioGroup = (RadioGroup) rootView.findViewById(R.id.radioGroup);
        radioGroup.setOnCheckedChangeListener(this);
 
        return rootView;
 
    }
 
    int translateIdToIndex(int id) {
        int index = -1;
        switch (id) {
            case R.id.radioButton1:
                index = 0 ;
                break;
            case R.id.radioButton2:
                index = 1 ;
                break;
            case R.id.radioButton3:
                index = 2 ;
                break;
            case R.id.radioButton4:
                index = 3 ;
                break;
            case R.id.radioButton5:
                index = 4 ;
                break;
            case R.id.radioButton6:
                index = 5 ;
                break;
            case R.id.radioButton7:
                index = 6 ;
                break;
 
        }
        return index;
    }
 
 
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
 
        int Index = translateIdToIndex(checkedId);
 
 // вот здесь что-то нужно написать чтобы передать выбранный вариант
 
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2018, 13:43
Ответы с готовыми решениями:

Нужна консультация по андроид
Пишу ТЗ на софт и возник нубский вопрос. Некоторые настройки приложение...

Нужна консультация в написании приложения
Всем привет! может кто поможет в написании приложении... Пример. приложение...

Нужна консультация по разработке приложения
Привет. Пишу приложение которое должно публиковать записи на стене в ВК....

Нужна консультация, управление сторонним приложением
Здравствуйте, нужна консультация разработчиков приложений на Android. ...

Нужна консультация по поводу написания Условий использования
Здравствуйте! Написав приложение, неплохо бы защитить его от копирования,...

8
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,575
Завершенные тесты: 1
12.02.2018, 13:44 2
ищи по форуму, потрать СВОЕ время
тема 100 раз обсуждалась
0
hossen
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 70
12.02.2018, 14:13  [ТС] 3
Гугл уже повесиля от моих запросов. Ребят реально торможу, видимо мыслю пока не совсем в том направлении чтобы правильные вопросы задавать. Pablito направь плиз в нужную сторону. Я и Intent и Bundle прикидывал, но что-то мне кается не то. Уже две недели сижу тумкаю.

Добавлено через 18 минут
Как видно в коде, у меня несколько фрагментов, и в каждом фрагменте свои радиобаттно. И с каждого фрагмента мне нужно получить цифру, которая в конце сплюсуется в результат со всех фрагментов .
0
demixdn
310 / 255 / 79
Регистрация: 31.10.2016
Сообщений: 619
12.02.2018, 15:17 4
hossen, не путайте разные вещи в коде. У вас данные не должны зависить от UI, в данном случае фрагментов Vopros1-10. Также приучайте себя программировать c объектов, а не процедур. Например, я вижу тут список вопросов, что значит нужно создать класс Question, и в нем будет текст вопроса. Далее у вопроса есть варианты ответов. Значит нам нужен класс Answer, который содержит в себе текст ответа. И класс Question содержит в себе массив\список вариантов ответов. Вот тебе еще одно поле. Дальше что можно делать с Question? Можно выбрать вариант ответа на него. Значит в Question должна быть возможность сохранить выбранный ответ. Просто добавляем поле c индексом ответа или поле с самим выбранным ответом. Вот и получается класс примерно такого содержания:
Кликните здесь для просмотра всего текста
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
import android.support.annotation.NonNull;
import android.util.Log;
 
import java.util.List;
 
import javax.annotation.Nullable;
 
public class Question {
    @NonNull
    private final String text;
    @NonNull
    private final List<Answer> answers;
    @Nullable
    private Answer selectedAnswer;
 
    public Question(@NonNull String text, @NonNull List<Answer> answers) {
        this.text = text;
        this.answers = answers;
    }
 
    public void setSelectedAnswer(int pos) {
        if (pos < 0 || pos >= answers.size()) {
            Log.e(getClass().getSimpleName(), "setSelectedAnswer: pos must be greater than 0 and less than " + answers.size());
            return;
        }
        this.selectedAnswer = answers.get(pos);
    }
 
    @NonNull
    public String getText() {
        return text;
    }
 
    @NonNull
    public List<Answer> getAnswers() {
        return answers;
    }
 
    @Nullable
    public Answer getSelectedAnswer() {
        return selectedAnswer;
    }
 
    public static class Answer {
        @NonNull
        private final String text;
 
        public Answer(@NonNull String text) {
            this.text = text;
        }
 
        public String getText() {
            return text;
        }
    }
}


Дальше создаете класс синглетон под названием Questions, который будет хранить в себе List<Question>, и в своих фрагментах вычитываете вопрос и варианта ответов. И когда выбираете один из вариантов, передаете индекс для этого вопроса и все. Ваши данные лежат в Questions, UI в вашем фрагменте. В любой момент можете пройтись по всему списку вопросов и прочитать ответы и что еще нужно вам там сделать. И любой дополнительный функционал пытаетесь провести через него. Например добавили в ответы картинки, положили их в assets или где вы их храните. И сразу добавляете поле в Answer: int drawableRes и там устанавливаете значение соответствующей картинки, а после во фрагменте в ImageView устанавливаете картинку как -от так:
Java
1
imageView.setImageResource(answers.get(pos).getDrawableRes())
0
hossen
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 70
12.02.2018, 15:54  [ТС] 5
спасибо большое за направление, буду двигаться в нем!
0
hossen
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 70
14.02.2018, 18:42  [ТС] 6
Чем больше читаю ответ demixdn тем больше запутываюсь, меня смущает вот эти строки:
Например, я вижу тут список вопросов, что значит нужно создать класс Question, и в нем будет текст вопроса.
Далее у вопроса есть варианты ответов. Значит нам нужен класс Answer, который содержит в себе текст ответа. И класс Question содержит в себе массив\список вариантов ответов.

Можете мне разжевать его ответ? иначе я рехнусь))

Мне кажется что с моего варианта кода (хоть и неоптимизированного) тоже можно посылать в синглтон отправлять индекс ответа, я прав?

Добавлено через 1 минуту
просто у меня не один вопрос, а несколько и на них существуют варианты ответов. Получается что и для вопросов нужен массив?
0
vdprog110
2 / 2 / 2
Регистрация: 05.01.2018
Сообщений: 125
14.02.2018, 20:31 7
hossen, ну а что непонятного? Опыт программирования есть? Обычно удобно для каждой задачи создавать свой класс. Например, книгу вы положите в шкаф, а не на кровать (класс шкаф). А у Вас не шкафа, в который можно положить книги (вопросы и ответы). Если все книги будут на кровати, точно рехнутся можно!
demixdn сказал, что
Цитата Сообщение от demixdn Посмотреть сообщение
класс примерно такого содержания
а не точно

Цитата Сообщение от hossen Посмотреть сообщение
иначе я рехнусь))
Цитата Сообщение от hossen Посмотреть сообщение
Получается что и для вопросов нужен массив?
Получается, что нужен
Почитайте, что такое класс.
И еще
Цитата Сообщение от hossen Посмотреть сообщение
типа психологичекий
такие тесты в одиночку не создают. Если его будет проходить больной, и не дай Бог, Ваш тест расстроит его (и его психику). Он может быть в состоянии депрессии, под наркотиками и т.д. Просто добавьте в программу "Я не несу никакой ответственности" и это будет не тест, а программа-шутка. Тесты создают с участием психологов, а если их знаний не хватает, с участием других специалистов.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,575
Завершенные тесты: 1
14.02.2018, 20:48 8
я смотрю, ты уже перешел к раздаванию советов во всех темах и разделах форума
не рановато, для человека, который насоздавал кучу дебильных тем и не мог расчехлить как поставить IDE из коробки?
0
vdprog110
2 / 2 / 2
Регистрация: 05.01.2018
Сообщений: 125
15.02.2018, 18:55 9
Pablito, не рановато. Надо рейтинг создать.
0
15.02.2018, 18:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2018, 18:55

Пишу проект жене, нужна консультация
У меня написан проект типа АРМ, хочу туда прикрутить тесты, нашёл исходники...

Пишу тест
Здравствуйте. Пишу тест в Дельфи. Одна форма для создания теста, другая для...

Пишу тест, не пойму как!
Пишу тест написал полностью его! просто не получается одна штука! я добавил...


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

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

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