Не удается разрешить метод 'show (, Java.lang.String)

По какой-то причине, когда я пытаюсь показать диалог, я получаю сообщение об ошибке из (fm, DIALOG_DATE); поговорка Не удается разрешить метод 'show (, Java.lang.String)'

Почему это не может решить метод? 

mDateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            FragmentManager fm = getActivity().getSupportFragmentManager();
            DatePickerFragment dialog = new DatePickerFragment();

Вот остальная часть моего класса:

package com.bignerdranch.Android.criminalintent;
import Android.os.Bundle;
import Android.text.Editable; 
import Android.text.TextWatcher;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.CheckBox;
import Android.widget.Button;
import Android.widget.CompoundButton;
import Android.widget.CompoundButton.OnCheckedChangeListener;
import Android.widget.EditText;

import Java.util.UUID;

public class CrimeFragment extends Fragment {
//key for the extra
public static final String EXTRA_CRIME_ID = "com.bignerdranch.Android.criminalintent.crime_id";

private static final String DIALOG_DATE = "date";

//holds crime
private Crime mCrime;

private EditText mTitleField;
private Button mDateButton;
private CheckBox mSolvedCheckBox;

//at start of build
public void onCreate(Bundle savedInstanceState) {
    //get crime from crime class

    *There are two ways a fragment can access data in its activity's intent:
    * an easy direct shortcut
    * or a complex flexible implementation
    * First try out the shortcut
    * in the shortcut, CrimeFragment will access CrimeActivity's intent directly

    //retrieve the extra from CrimeActivity's intent and use it to fetch the Crime
    //UUID crimeId = (UUID)getActivity().getIntent().getSerializableExtra   (EXTRA_CRIME_ID); //shortcut removed in chapter 10 and "should feel warm and fuzzy inside for maintaining CrimeFragments Independence"
    UUID crimeId = (UUID)getArguments().getSerializable(EXTRA_CRIME_ID);
    //CrimeLab.get() requires a context object, so CrimeFragment passes the CrimeActivity
    mCrime = CrimeLab.get(getActivity()).getCrime(crimeId);


//Create the view and inflate the layout
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for crime Fragment
    //pass false because view will be added in the activitys code
    View v = inflater.inflate(R.layout.fragment_crime, container, false);

    //gets crime_title from fragment_crime.xml
    mTitleField = (EditText)v.findViewById(;
    mTitleField.addTextChangedListener(new TextWatcher() {
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            //not used

        public void onTextChanged(CharSequence s, int start, int before, int count) {

        public void afterTextChanged(Editable s) {
            //also not used

    //find date button from fragment_crime
    mDateButton = (Button)v.findViewById(;
    //set mDateButton text to current date and time
    //disable button for now...enabled in chapter 12
   // mDateButton.setEnabled(false);

    mDateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            FragmentManager fm = getActivity().getSupportFragmentManager();
            DatePickerFragment dialog = new DatePickerFragment();

    //find solved checkbox from fragment_crime
    mSolvedCheckBox = (CheckBox)v.findViewById(;
    //user clicks solved check box
    mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
            //set the crime's solved property
    //returns the view
    return v;

/*The downside to direct retrieval
*can not encapsulate fragment
* CrimeFragment is no longer a reusable building block because it expects that it will always be hosted by an activity whose intent defines extra named "EXTRA_CRIME_ID"
* CrimeFragment cannot be used with just any activity

/*Fragment Arguments
*A better solution is to stash the mCrimeId someplace that belongs to CrimeFragment rather than keeping it in CrimeActivity's personal space
* this someplace can be an arguments bundle
* Every fragment instance can have a Bundle object attached to it
* bundle contains key value pairs that work just like the intent extras of an activity
* Pg. 195

/*attaching arguments to a fragment
*Attaching args to frags must be done after the frag is created but before it is added to the activity
* To hit this window use a static class called newInstance()
* This method creates the fragment instance and bundles up and sets its arguments
//for attaching arguments to a fragment
public static CrimeFragment newInstance(UUID crimeId){
    Bundle args = new Bundle();
    args.putSerializable(EXTRA_CRIME_ID, crimeId);

    CrimeFragment fragment = new CrimeFragment();

    //pass UUID from extra
    return fragment;



Чтобы решить эту проблему, если вы используете, то используйте getFragmentManager ():

mDateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            FragmentManager fm = getActivity().getFragmentManager();
            DatePickerFragment dialog = new DatePickerFragment();

чтобы использовать getSupportFragmentManager () , необходимо расширить от:

проверьте ваш импорт:


Это решило проблему для меня.

 public void showDatePicker() {
        DialogFragment newFragment = new DatePickerFragment();,"datePicker");
Johan Fick