我有五个问题。每个片段都有一个带有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;
}
}
1条答案
按热度按时间a6b3iqyw1#
一种解决方案是让
Q5Fragment
btnSubmit
处理程序调用Activity
派生类中的某个方法,该方法将执行求和,然后打开结果活动。所以你的提交处理器看起来像这样:这需要您声明一个接口:
然后在保存片段的Activity中实现它。
现在,在Activity的
submitQuestions
中,您将从片段中获取所有值。要做到这一点,让每个片段都有一个返回其值的方法:然后在
submitQuestions
中对这些值求和并打开新Activity: