如何从Activity for Fragment的开关设置OnClickListener?

时间:2015-10-08 07:18:15

标签: java android onclicklistener

我有一个有片段的活动。这个片段有不同的开关和按钮。现在我可以从Activity中访问这些Fragment的元素。

现在,我想在Fragment的开关上设置一个OnClickListener,但是在Activity本身。问题是,从Activity第二次开始切换不听。

3 个答案:

答案 0 :(得分:0)

对于切换,我建议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
            }
        }
    });

希望这个帮助

答案 1 :(得分:0)

您可以在Activity类中的方法中使用onClickListener,如下所示:

public OnClickListener switchClickListener()
{
    return new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //code here
        }
    };
}

您可以从片段中调用此方法,并使用以下代码设置Switch OnClicklistener:

switch.setOnClickListener( ((Activity) getActivity).switchClickListener());

答案 2 :(得分:0)

您可以在您的活动中实现OnClickListener,在附加时您可以使用它来调用onclicklistener。在活动 -

public class MainActivity extends AppCompatActivity implements OnClickListener {
....
@Override
public void onClick(View view) {
    switch (view.getId()){

    }
}
}

并在fragment-

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);
}

注意 - 上述代码仅在片段附加活动时有效。推荐的方法是使用回调。