0

Hello I'm doing an app in which a button is pressed and an AlertDialog window pops up with a TimePicker. However it is in a Fragment so AppCompatActivity will not do.

Fragment itself:

public class time_change extends Fragment implements  TimePickerFragment.TimeDialogListener {
private static final String DIALOG_TIME = "MainActivity.TimeDialog";

private View v;
private Button timePickerAlertDialog;
private ImageButton back;

@Override
@Nullable
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.pamokos, container, false);

    timePickerAlertDialog = (Button) v.findViewById(R.id.alert_dialog_time_picker);

    timePickerAlertDialog.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            TimePickerFragment dialog = TimePickerFragment.newInstance();
            dialog.show(getActivity().getFragmentManager(), "TimePickerFragment");
        }
    });

    back = (ImageButton) v.findViewById(R.id.back_btn1);
    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Pamokos fr = new Pamokos();
            time_change fr2 = new time_change();
            android.app.FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.activity_frag, fr);
            fragmentTransaction.remove(fr2);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
        }

    });
    return v;
}

@Override
public void onFinishDialog(String time) {
    Toast.makeText(getActivity(), "Selected Time : " + time, Toast.LENGTH_SHORT).show();
}
}

But It shows an error at

dialog.show(getActivity().getFragmentManager(), "TimePickerFragment");

Saying "Cannot resolve method 'show(android.app.FragmentManager, java.lang.String)'"

Full code is from this tutorial https://www.androidtutorialpoint.com/basics/android-alert-dialog-tutorial-working-time-picker-date-picker-list-dialogs/

I'm quite lost.

Sajev
  • 45
  • 2
  • 9

2 Answers2

2

Replace

TimePickerFragment dialog = TimePickerFragment.newInstance();
dialog.show(getActivity().getFragmentManager(), "TimePickerFragment");

with this

 FragmentManager fm = getActivity().getSupportFragmentManager();
 TimePickerFragment dialog = new TimePickerFragment ();
 dialog.show(fm, "TimePickerFragment");
Anand Diamond
  • 339
  • 1
  • 9
1

add below import inside your DialogFragment class

import android.support.v4.app.DialogFragment;

Replace

dialog.show(getActivity().getFragmentManager(), "TimePickerFragment");

with

dialog.show(getSupportFragmentManager(), "TimePickerFragment");
Rissmon Suresh
  • 13,173
  • 5
  • 29
  • 38
  • I've replaced it but now only getSupportFragmentManager() has changed to fully red instead of the red underline, also it says "Cannot resolve method 'getSupportFragmentManager()'" – Sajev Apr 07 '17 at 15:36
  • replace android.app.DialogFragment with import android.support.v4.app.DialogFragment; – Rissmon Suresh Apr 07 '17 at 15:37
  • can please post the imports inside time_change class – Rissmon Suresh Apr 07 '17 at 15:50
  • import android.app.FragmentManager; import android.app.FragmentTransaction; import android.support.annotation.Nullable; import android.app.Fragment; import android.support.v4.app.DialogFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; import android.widget.Toast; – Sajev Apr 07 '17 at 15:53
  • try replacing android.app.FragmentManager, import android.app.FragmentTransaction;import android.app.Fragment; – Rissmon Suresh Apr 07 '17 at 15:55
  • with import android.support.v4.app.FragmentManager ;import android.support.v4.app.FragmentTransaction;import android.support.v4.app.Fragment; – Rissmon Suresh Apr 07 '17 at 15:57
  • sadly didn't change it, and now also android.app.FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); is now in red underline – Sajev Apr 07 '17 at 16:01