2011-07-06 70 views
8

我跟隨機器人的例子,但我有一個不全面的錯誤:問題與alertdialog秀片段的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");返回我一個錯誤:

的方法秀(FragmentManager,字符串)在類型DialogFragment是 不適用於參數(FragmentManager,String)

某人c應該幫助我嗎?

回答

13

問題是因爲您需要使用支持包的FragmentManager,但在撥打getFragmentManager()時正在使用本機FragmentManager。嘗試在初始化變量fm時調用getSupportFragmentManager()

6

實際上,在您做@Jacob說的之後,您還必須確保您包含支持包中的DialogFragment,而不是來自本機包。

你可以做到這一點通過導入,

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

在我的情況,我的minSDK設置爲14,所以我不想使用支持包。我的問題是,我導入錯誤DialogFragment像這樣:

import android.support.v4.app.DialogFragment; 

我改成了這一點,它的工作:

import android.app.DialogFragment;