如何从不同的片段添加单选按钮

问题描述 投票:0回答:1

我有 5 个问题。每个片段都有一个带有 4 个单选按钮的问题。每个单选按钮都有一个 1-4 之间的标签。在第 5 个片段中,它有一个提交按钮,所有单选按钮应加起来并显示在新活动的总计上。但是,每当我单击“提交”时,总数始终为 5(片段 1-4 不相加。我需要在片段 1-4 上添加什么,以便这些值可以添加并显示在总数中。

image

package com.example.act.Fragments;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import androidx.fragment.app.Fragment;

import com.example.act.R;
import com.example.act.ResultActivity;

public class Q5Fragment extends Fragment {

    private RadioGroup radioGroup;
    private Button btnSubmit;
    private int total = 0; // Initialize total to 0

    public Q5Fragment() {
    }

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

        radioGroup = view.findViewById(R.id.radioGroup);
        btnSubmit = view.findViewById(R.id.btnSubmit);

        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i < radioGroup.getChildCount(); i++) {
                    RadioButton radioButton = (RadioButton) radioGroup.getChildAt(i);
                    if (radioButton.isChecked()) {
                        int selectedValue = Integer.parseInt(radioButton.getTag().toString());
                        total += selectedValue;
                    }
                }

                Intent intent = new Intent(getActivity(), ResultActivity.class);
                intent.putExtra("totalValue", total);
                startActivity(intent);
            }
        });
        return view;
    }

    public void receiveFragmentValue(int selectedValue) {
        total += selectedValue;
    }
}
java android android-fragments
1个回答
0
投票

一种解决方案是让您的

Q5Fragment
btnSubmit
处理程序调用
Activity
派生类中的某个方法,该方法将进行求和,然后打开结果活动。所以你的提交处理程序看起来像这样:

btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((QuestionAware)getActivity()).submitQuestions();
            }
        });

这需要你声明一个接口:

 interface QuestionAware {
   void submitQuestions();
 } 

然后在保存片段的 Activity 中实现它。

现在,在 Activtiy 的

submitQuestions
中,您将从片段中获取所有值。为此,让每个片段都有一个返回其值的方法:

public int getSelectedValue() {
    int selectedValue = 0;
    for (int i = 0; i < radioGroup.getChildCount(); i++) {
        RadioButton radioButton = (RadioButton) radioGroup.getChildAt(i);
        if (radioButton.isChecked()) {
            selectedValue = Integer.parseInt(radioButton.getTag().toString());
        }
    }
    return selectedValue;
}

然后在

submitQuestions
中对这些值求和并打开新活动:

int total = fragment1.getSelectedValue() + fragment2.getSelectedValue() + fragment3.getSelectedValue() + fragment4.getSelectedValue() + fragment5.getSelectedValue();

Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra("totalValue", total);
startActivity(intent);
© www.soinside.com 2019 - 2024. All rights reserved.