Получение значений из нескольких фрагментов с помощью универсальной кнопки - PullRequest
0 голосов
/ 26 ноября 2018

Я довольно новичок в программировании Android, поэтому прошу прощения, если вопрос глупый.Я попытался найти и просмотреть несколько учебных пособий по YouTube, но не смог найти ничего, что могло бы ответить на мой вопрос.

Итак, теперь у меня есть несколько фрагментов по 5 радиогрупп в каждой.Я дошел до точки, где я могу заставить приложение вычислять и отображать «счет» для выбранных радиокнопок.Но я хотел бы включить одну кнопку, которая может взять все эти радиокнопки и вычислить оценку для всех фрагментов за один раз.Связки были бы способом пойти?Если так, как я могу сделать кнопку, которая передает все сразу?

Я прилагаю код для моего фрагмента:

package se.example.bevarade;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.TextView;


public class DukadeBordFragment extends Fragment {
    int dukadeScore;
    View view;

    public DukadeBordFragment(){
        // Empty public constructor
    }


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.dukade_bord, container, false);

        Button subbeBtn = (Button) view.findViewById(R.id.btn_submit);
        subbeBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick (View v){
                dukadeScore = checkAnswers();
                displayFinalScore(dukadeScore);

            }
        });

        return view;

    }
    public int checkAnswers() {

        /* Question One - The correct answer is RadioButton q14*/
        RadioButton dukq1a = view.findViewById(R.id.duk_q1rb_alt1);
        boolean dukQue1 = dukq1a.isChecked();
        if (dukQue1) {
            dukadeScore += 1;
        }
        /* Question Two - The correct answer is RadioButton q14*/
        RadioButton dukq2a = view.findViewById(R.id.duk_q2rb_alt1);
        boolean dukQue2 = dukq2a.isChecked();
        if (dukQue2) {
            dukadeScore += 1;
        }
        /* Question Three - The correct answer is RadioButton q14*/
        RadioButton dukq3a = view.findViewById(R.id.duk_q3rb_alt1);
        boolean dukQue3 = dukq3a.isChecked();
        if (dukQue3) {
            dukadeScore += 1;
        }
        /* Question Four - The correct answer is RadioButton q14*/
        RadioButton dukq4a = view.findViewById(R.id.duk_q4rb_alt1);
        boolean dukQue4 = dukq4a.isChecked();
        if (dukQue4) {
            dukadeScore += 1;
        }
        /* Question Five - The correct answer is RadioButton q14*/
        RadioButton dukq5a = view.findViewById(R.id.duk_q5rb_alt1);
        boolean dukQue5 = dukq5a.isChecked();
        if (dukQue5) {
            dukadeScore += 1;
        }


        return dukadeScore;
    }


    private void displayFinalScore(int score){
        TextView scoreView = view.findViewById(R.id.score_text);
        scoreView.setText(getString(R.string.you_scored) + score    + getString(R.string.out_of_total));

        dukadeScore = 0;
    }


}

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Существует несколько решений,

  1. Передача результатов в виде пакета из одного фрагмента в другой
  2. Создание открытого массива уровня приложения или чего-то такого, что будет содержать данные до завершения потока
  3. Создать переменную активности - статическую, в которой будут храниться все данные фрагментов.

Но вам нужно деинитализировать ее после завершения расчета.

0 голосов
/ 26 ноября 2018

Передача данных через пакетный фрагмент за фрагментом и вычисление их в конце ИМО.

...