2011-07-06 11 views
8

Śledzę android przykład, ale mam niezrozumiały błąd:Problemy z alertdialog koncert w fragmencie android

void showDialog() { 
    DialogFragment newFragment = MyAlertDialogFragment.newInstance(); 
    newFragment.show(fm, "alert"); 
} 

public static class MyAlertDialogFragment extends DialogFragment { 
    public static MyAlertDialogFragment newInstance() { 
     MyAlertDialogFragment frag = new MyAlertDialogFragment(); 
     return frag; 
    } 

    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new AlertDialog.Builder(getActivity()).setTitle("test") 
       .setMessage("bla bla bla").create(); 
    } 
} 

newFragment.show(fm, "alert"); zwraca mi błąd:

metoda pokazu (FragmentManager, String) w Typ DialogFragment to nie dotyczy argumentów (FragmentManager, String)

Ktoś c może mi pomóc?

Odpowiedz

13

Problem polega na tym, że musisz używać pakietu pomocy FragmentManager, ale używasz natywnego FragmentManager, gdy zadzwonisz pod numer getFragmentManager(). Spróbuj wywołać getSupportFragmentManager() podczas inicjowania zmiennej fm.

6

Właściwie po napisaniu @Jacob trzeba również upewnić się, że włączasz DialogFragment z pakietu Support, a nie z pakietu natywnego.

Można to zrobić poprzez importowanie,

import android.support.v4.app.DialogFragment; 
5

W moim przypadku mój minSDK jest ustawiony na 14 więc nie chcą korzystać z pakietu pomocy. Mój problem był ja importowania niewłaściwym DialogFragment tak:

import android.support.v4.app.DialogFragment; 

Zmieniłem go do tego i to działało:

import android.app.DialogFragment;