android – getSupportFragmentManager不能在DialogFragment上编译

我怎么能这样说:
public class TagsDialog extends DialogFragment
{
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.tags_dialog,null));
        builder.setMessage("This is a message").setTitle("TAGS");
        return builder.create();
    }
}

从ViewPager里面的Fragment里面:

public class MyFragment extends Fragment
    {
        @Override
        public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
        {

    ...

            ImageView btnTags = (ImageView)view.findViewById(R.id.btnTags);
            btnTags.setonClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {

                    DialogFragment dlg = new TagsDialog();
                    //this line doesn't compile
                    dlg.show(getSupportFragmentManager(),"tags");

                }
            });
}
}

我已经尝试了很长时间才能使这个工作,但getSupportFragmentManager永远不会解决…任何想法?

编辑:

我觉得这都是由支持FragmentManager和android.app.FragmentManager引起的,但我不知道如何解决这个问题,因为我正在使用支持库中的ViewPager …

getSupportFragmentManager /以及所有相关的getFragManager方法(如父级和子级)总是从支持lib返回Manager,而show方法需要核心方法.

进口是:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

FragmentManager fm = getActivity().getSupportFragmentManager(); // returns from support lib
DialogFragment dlg = new TagsDialog();
dlg.show(fm,"tags"); // wants core...

如果我只使用core,则getActivity()上不存在getSupportFragmentManager()…

解决方法

你应该仔细检查你的进口.你不能混合使用Fragment& FragmentManager来自支持库和android核心apis.

如果您使用支持,请使用支持中的所有内容(来自软件包android.support.v4.app).如果没有,请使用核心api包(android.app)中的所有内容.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...