如何从 Fragment 访问 Activity 内的 Button。实际上我设置 myButton 被禁用但是当我的一些单选按钮被点击时我想设置 myButton 启用?
问问题
3042 次
2 回答
5
您可以尝试几件事。第一个是用来getActivity().findViewByIt(id)
获取Button
,我认为它应该可以工作,但从工程方面来看这不是一个好的解决方案,因为您会对托管它Fragment
的布局做出假设。Activity
第二个是提供一个回调接口,如此处所述。每次复选框更改状态时只需调用回调方法。这种方法更好,因为Fragment
任何实现回调接口的活动都可以自由地重用它。最后但并非最不重要的一点是,如果可能,您应该尝试将片段放入Button
片段内部。
于 2013-03-01T22:10:07.783 回答
4
这是一个例子:
在 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
接口将托管 Activity 的细节远离 Fragment,只要 Activity 实现,就允许 Fragment 由任何 Activity 托管MyFragment.Callback
。
于 2013-03-01T22:12:57.500 回答