首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段与活性的沟通

片段与活性的沟通
EN

Stack Overflow用户
提问于 2017-10-05 19:25:59
回答 2查看 957关注 0票数 1

我有一个有多个按钮的片段。在单击活动中的特定按钮时,我希望将所有这些切换按钮的状态上传到服务器。我看到了这样做的一种方法,在下面的链接中,我们创建了一个侦听器接口,在每个切换按钮的每一次单击中,我们都会更新相应于每个切换按钮的活动中的一些标记/整数。

https://developer.android.com/training/basics/fragments/communicating.html

但是,我想知道是否有任何方法可以从活动中了解片段中所有切换按钮的选中/未检查状态,而无需在每次单击切换按钮时实现接口方法。希望我能说清楚。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-05 19:50:09

下面是一个如何实现这一目标的工作示例。活动:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
    ToggleFragment toggleFragment;
    Button updateStatusButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main_activity);

        updateStatusButton = (Button) findViewById(R.id.updateStatusButton);

        toggleFragment = ToggleFragment.newInstance();

        getSupportFragmentManager().beginTransaction()
                                    .replace(R.id.main_frame, toggleFragment, "ToggleFragment")
                                    .commit();

        updateStatusButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean buttonsChecked = toggleFragment.areToggleButtonsChecked();

                Toast.makeText(MainActivity.this, String.format("Toggle buttons checked: %s", buttonsChecked), Toast.LENGTH_LONG).show();
            }
        });
    }
}

碎片是:

代码语言:javascript
复制
public class ToggleFragment extends Fragment {
    ToggleButton toggleButton1;
    ToggleButton toggleButton2;
    ToggleButton toggleButton3;

    public static ToggleFragment newInstance() {
        Bundle args = new Bundle();
        ToggleFragment fragment = new ToggleFragment();

        fragment.setArguments(args);

        return fragment;
    }

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

        toggleButton1 = (ToggleButton) view.findViewById(R.id.toggleButton1);
        toggleButton2 = (ToggleButton) view.findViewById(R.id.toggleButton2);
        toggleButton3 = (ToggleButton) view.findViewById(R.id.toggleButton3);

        return view;
    }

    public boolean areToggleButtonsChecked() {
        return toggleButton1.isChecked()
                && toggleButton2.isChecked()
                && toggleButton3.isChecked();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2017-10-05 19:30:21

老实说,实现这一点的最好方法是使用来自Architecture组件库的ViewModelViewModel可以有一个ObservableFieldLiveData值,每个片段都可以观察到,并且总是有正确的信息。这也将使人们更容易意识到生命周期。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46593378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档