[英]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.