2011-07-06 40 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;