[英]How to set an OnClickListener in an activity to be received in a Fragment?
[英]How to set OnClickListener from Activity for Fragment's switch?
我有一个带有片段的活动。 该片段具有不同的开关和按钮。 现在,我可以从“活动”中访问这些Fragment的元素。
现在,我想在Fragment的开关上但在Activity本身中设置一个OnClickListener。 问题是,从“活动”第二次开始,开关没有监听。
对于开关,我建议使用OnCheckedChangeListener
而不是OnClickListener
来监听事件
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// do something when check is selected
} else {
//do something when unchecked
}
}
});
希望有帮助
您可以将Activity类的方法中的onClickListener设置为如下所示:
public OnClickListener switchClickListener()
{
return new OnClickListener()
{
@Override
public void onClick(View v)
{
//code here
}
};
}
您可以从片段中调用此方法,并使用以下代码设置Switch OnClicklistener:
switch.setOnClickListener( ((Activity) getActivity).switchClickListener());
您可以在活动时实现OnClickListener,并且在附加时可以使用它来调用onclicklistener。 活动中
public class MainActivity extends AppCompatActivity implements OnClickListener {
....
@Override
public void onClick(View view) {
switch (view.getId()){
}
}
}
而在片段-
MainActivity mainActivity;
Button button;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_test, container, false);
button = (Button) view.findViewById(R.id.button);
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mainActivity = (MainActivity) activity;
button.setOnClickListener(mainActivity);
}
注意-以上代码仅在您的片段附有活动时才有效。 推荐的方法是使用回调。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.