Java 如何从片段访问活动内的按钮
如何从片段访问活动内的按钮。实际上,我设置我的按钮是禁用的,但是当我的一些单选按钮被单击时,我想将我的按钮设置为启用状态?您可以尝试一些方法。第一种方法是使用Java 如何从片段访问活动内的按钮,java,android,Java,Android,如何从片段访问活动内的按钮。实际上,我设置我的按钮是禁用的,但是当我的一些单选按钮被单击时,我想将我的按钮设置为启用状态?您可以尝试一些方法。第一种方法是使用getActivity().findViewByIt(id)来获取按钮,我认为它应该可以工作,但从工程角度来看,这不是一个好的解决方案,因为您的片段会对承载它的活动布局进行假设。第二种方法是提供一个回调接口,如下所述。只要在复选框每次更改状态时调用回调方法即可。这种方法更好,因为实现回调接口的任何活动都可以自由地重用片段。最后但并非最不重要
getActivity().findViewByIt(id)
来获取按钮,我认为它应该可以工作,但从工程角度来看,这不是一个好的解决方案,因为您的片段
会对承载它的活动
布局进行假设。第二种方法是提供一个回调接口,如下所述。只要在复选框每次更改状态时调用回调方法即可。这种方法更好,因为实现回调接口的任何活动都可以自由地重用片段。最后但并非最不重要的一点是,如果可能的话,您应该尝试将按钮放入片段中。以下是一个示例:
在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);
}
}
});
}
在MyActivity.java中,它承载/包含一个MyFragment:
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
接口使托管活动的详细信息远离片段,允许任何活动托管片段,只要活动实现MyFragment.Callback
不要让片段依赖于活动。这是个糟糕的设计。该片段可以由另一个活动托管。使用适当的回调机制。啊,条纹。我看到您也提到了回调接口。