【问题标题】:Radio button pass data in fragment单选按钮在片段中传递数据
【发布时间】:2017-12-24 07:32:40
【问题描述】:

我在 fragmentA 中有一些 RadioButton,在 fragmentB 中还有一些 RadioButton 我希望当其中一个isChecked(FragmentA),在 FragmentB 中禁用所有单选按钮。 相同的活动承载这些片段。

片段 A 中的事件单击单选按钮:

   RadioGroup radioGroup = view.findViewById(R.id.readingGroup);
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
            switch (i) {
                case R.id.btnNormalD:
                    //code
                    break;
                case R.id.btnAbsence:
                    //code
                    break;
                case R.id.btnWithAnObstacle:
                    //code
                    break;
                case R.id.btnHaunted:
                    //code
                    break;
                case R.id.btnDestroyed:
                    //code
                    break;
                case R.id.btnNoSubscribersFound:
                    //code
                    break;
                case R.id.btnGround:
                    //code
                    break;
                case R.id.btnInterrupted:
                    //code
                    break;

            }
        }
    });

【问题讨论】:

标签: android radio-button fragment


【解决方案1】:

如果您的片段共享除ViewPager 之外的同一容器,那么您可以使用Bundle 在片段之间传递数据。 每当您进行交易时,将单选按钮的状态设置为捆绑并将其验证到下一个片段中。

 Fragment fragment=new FragmentA();
    Bundle bundle=new Bundle();
    bundle.putBoolean("show",false);// Pass the data here
    fragment.setArguments(bundle);
    getSupportFragmentManager().beginTransaction()
            .add(fragment,R.id.frame).commit();

你可以在下一个片段中得到它。

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragment_2,null);
    if(getArguments()!=null){
        boolean show=getArguments().getBoolean("show",true);
        if(show){
            // Do action here 
        }else{
            // Do action here
        }
    }
    return view;
}

如果您使用的是 `ViewPager',那么您可以简单地从适配器获取片段并调用该片段的任何公共方法来设置状态。

【讨论】:

  • 我的片段没有 id,因为这些 Initialize in view pager 适配器
  • 没有id是什么意思?您正在为平板电脑开发吗?
  • 这些基于int position 在视图寻呼机中的位置(public Fragment getItem(int position))。
  • 哦。看看this thread
  • @ADM 嘿,如果我想单击片段的单选按钮,那么片段B 的线性布局将可见。有可能吗?我该如何实施?请指导我,这是我发布的地方。stackoverflow.com/questions/68063328/…
猜你喜欢
  • 2023-03-23
  • 2016-12-19
  • 1970-01-01
  • 2015-10-16
  • 2014-12-18
  • 2021-04-14
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多