繁体   English   中英

如何从Fragment访问Activity里面的Button

[英]How to access Button inside Activity from Fragment

如何从Fragment访问Activity里面的Button。 实际上我设置myButton是禁用但当我点击我的一些radioButton时我想设置myButton?

你可以尝试一些事情。 第一个是使用getActivity().findViewByIt(id)来获取Button ,我认为它应该可以工作但是它不是工程方面的好解决方案,因为你的Fragment会对托管它的Activity布局做出假设。 第二种是提供这里描述的回调接口。 每次复选框更改状态时,只需调用回调方法。 这种方法更好,因为任何实现回调接口的活动都可以自由地重用Fragment 最后但并非最不重要的是,如果可能的话,你应该尝试将Button放在片段中。

这是一个例子:

在MyFragment.java中

public MyFragment extends Fragment {
    public interface Callback {
        public void onRadioButtonClicked(View radioButton);
    }

    private Callback callback;

    @Override
    public void onAttach(Activity ac) {
        super.onAttached(ac);
        callback = (Callback)ac;
    }

    @Override
    public void onDetach() {
        callback = null;
        super.onDetach();
    }

    ....
    ....
       radioButton.setOnClickListener(new OnClickListener() {
           public void onClick(View view) {
               if (callback != null) {
                   callback.onRadioButtonClicked(view);
               }
           }
       });
}

在承载/包含MyFragment的MyActivity.java中:

public MyActivity extends Activity implements MyFragment.Callback {

    ...
    @Override
    public void onRadioButtonClicked(View radioButton) {
        // The radiobutton in MyFragment has been clicked
        myButton.setEnabled(true); // or something like this.
    }

}

此设计使用MyFragment.Callback接口将托管活动的详细信息远离Fragment,只要Activity实现MyFragment.Callback ,就允许任何Activity托管Fragment。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM