从 onTimeSet 上的片段获取标签

Getting tag from fragment on onTimeSet

我有一个处理片段的 MainActivity。在我做的其中一个片段上:

enterBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            DialogFragment newFragment = new TimePickerFragment();
            newFragment.show(getActivity().getFragmentManager(), "timePickerExit");

        }
    });

    exitBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            DialogFragment newFragment = new TimePickerFragment();
            newFragment.show(getActivity().getFragmentManager(), "timePickerEnter");

        }
    });

在我的 MainActivity 上我得到了结果:

public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener

具有以下功能:

@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {

//Who called it?
}

我怎么知道在 onTimeSet 上调用它的是 enterBtn 还是 exitBtn?

您可以为进入和退出按钮设置布尔标志。

isExit = false;
enterBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        isExit = false;
        DialogFragment newFragment = new TimePickerFragment();
        newFragment.show(getActivity().getFragmentManager(), "timePickerExit");

    }
});

exitBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        isExit = true;
        DialogFragment newFragment = new TimePickerFragment();
        newFragment.show(getActivity().getFragmentManager(), "timePickerEnter");

    }
});

并在 Override 方法中

@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {

    if(isExit)
    {
        // Do your task here if Exit button click
    }
     else
    {
        // Do your task here if Enter button click
    }
}

你可以做一些像

Bundle bundle = new Bundle();
bundle.putInt("btnNumber", 1); //or 0
DialogFragment newFragment = new TimePickerFragment();
newFragment.setArguments(bundle);
newFragment.show(getActivity().getFragmentManager(), "timePickerExit");

然后在片段中使你的 interface

private OnCompleteListener mListener;
/// your otherDialogStuff

public static interface OnCompleteListener {
    public abstract void onComplete(Int fragNumber, int hourOfDay, int minute);
}



// make sure the Activity implemented it
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        this.mListener = (OnCompleteListener)activity;
    }
    catch (final ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
    }
}

然后onTimeSet调用

 mListener.onComplete(0or1 ,12,12);

你的 activity 应该实现 TimePickerFragment.OnCompleteListener