Dim
Dim

Reputation: 4827

Getting tag from fragment on onTimeSet

I have an MainActivity which handles fragments. On one of the fragments I do:

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

        }
    });

And on my MainActivity I get the result:

public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener

with the function:

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

//Who called it?
}

How can I know at onTimeSet who called it enterBtn or exitBtn?

Upvotes: 1

Views: 190

Answers (2)

Abdul Kawee
Abdul Kawee

Reputation: 2727

You could do some thing like

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

and then in fragment make your on 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");
    }
}

and then onTimeSet call

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

and your activity should implement TimePickerFragment.OnCompleteListener

Upvotes: 1

Vishal Chhodwani
Vishal Chhodwani

Reputation: 2577

You can set a boolean flag for enter and exit button.

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

    }
});

and in the Override method

@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
    }
}

Upvotes: 1

Related Questions