Android 如何将放射组值从片段传递到活动?

Android 如何将放射组值从片段传递到活动?,android,android-fragments,android-radiogroup,Android,Android Fragments,Android Radiogroup,如何从片段中的radiogroup中获取值, 我有一个片段来显示问题,我想得到值 “活动”的用户回答,因为“下一步”和“上一步”按钮位于“活动”中, 我的问题来自sqlite数据库 我的活动片段 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

如何从片段中的radiogroup中获取值, 我有一个片段来显示问题,我想得到值 “活动”的用户回答,因为“下一步”和“上一步”按钮位于“活动”中, 我的问题来自sqlite数据库

我的活动片段

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    viewPager = findViewById(R.id.view_pager);
    setupViewPager(viewPager);

    back = findViewById(R.id.btnBack);
    next = findViewById(R.id.btnNext);
    back.setOnClickListener(this);
    next.setOnClickListener(this);
}
显示从frament到活动使用的ViewPager的问题

 private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(0));, "1");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(1));, "2");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(2);, "3");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(3));, "4");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(4));, "5");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(5);, "6");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(6));, "7");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(7));, "8");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(8));, "9");
        adapter.addFrag(QuestionFragment.newInstance(String.valueOf(9));, "10");
        viewPager.setOffscreenPageLimit(adapter.getCount());
        viewPager.setAdapter(adapter);
    }
按钮“下一步”和“返回”

@Override
public void onClick(View view) {
    if(view == back){
        mfragmentIndex--;
        viewPager.setCurrentItem(mfragmentIndex);


    }else if(view == next) {
            mfragmentIndex++;
            viewPager.setCurrentItem(mfragmentIndex);

    }
}
类视图寻呼机

class ViewPagerAdapter extends FragmentPagerAdapter{
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitle = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }
    public void addFrag(Fragment fragment,String title){
        mFragmentList.add(fragment);
        mFragmentTitle.add(title);
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return super.getPageTitle(position);
    }
}

可以通过在片段类中创建接口,然后在活动中实现它来完成

在片段中创建一个接口,如:-

// Container Activity must implement this interface
public interface OnRadioGroupSelectedListener {
    public void onButtonSelected(String value);
}
全局声明片段类中的listner对象:-

OnRadioGroupSelectedListener mCallback;
片段在其onAttach()生命周期方法期间捕获接口实现,然后可以调用接口方法以便与活动通信

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    // This makes sure that the container activity has implemented
    // the callback interface. If not, it throws an exception
    try {
        mCallback = (OnRadioGroupSelectedListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString()
                + " must implement OnRadioGroupSelectedListener");
    }
}
现在要接收回调,请添加:-

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        // checkedId is the RadioButton selected
       // if(checkedId==R.id.radio0)  {
      //      mCallback.onButtonSelected(0)
       //  }else if (checkedId==R.id.radio1)  {
       //     mCallback.onButtonSelected(1);

       //  }else if (checkedId==R.id.radio2)  {
        //      mCallback.onButtonSelected(2);

       //  }else if (checkedId==R.id.radio3)  {
       //     mCallback.onButtonSelected(3);

       //  }
     RadioButton radioButton = group.findViewById(checkedId);

     mCallback.onButtonSelected(radioButton.getText());


});
回调将选中的单选按钮的位置传递给活动

现在在活动中实现列表器

implements QuestionFragment.OnRadioGroupSelectedListener
并重写该方法以获取活动中选定的按钮位置


注意:-您还可以根据需要更改
onButtonSelected(String selectedRadioButtonValue)
参数。

如何在活动中获取值单选按钮?public void onButtonSelected(int-MFFragmentIndex){if(currentQuestion.getANSWER().equals(mCallback)){Log.e(“注释”,“正确答案”);}其他{Log.e(“注释”,“错误答案”);}根据您的要求进行了一些编辑,希望它能被关闭。非常感谢您我爱您
implements QuestionFragment.OnRadioGroupSelectedListener