在ActionBar.Tab片段中显示DialogFragment

时间:2014-01-15 13:04:39

标签: android android-tabs android-dialogfragment

我有一些Actiobar有5个标签,每个标签都有一个片段。在其中3个片段中,我想显示一个Dialog,所以我创建了一个新类:

 public static class MyDialogFragment extends DialogFragment {
        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        static MyDialogFragment newInstance() {
            return new MyDialogFragment();
        }

        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            int style = DialogFragment.STYLE_NORMAL;
            int theme =  android.R.style.Theme_Holo_Dialog;

            setStyle(style, theme);
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View v = inflater.inflate(R.layout.fragment_dialog, container, false);
            View tv = v.findViewById(R.id.textV);
            ((TextView)tv).setText("Dialog using style Normal - Theme AlertDialog - NoActionBar");


            return v;
        }
    }

在这3个片段的每个onCreate方法中,我试图通过使用此方法显示Dialog:

private void showPopup()
{
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    Fragment prev = getFragmentManager().findFragmentByTag("dialog");
    if (prev != null) {
        ft.remove(prev);
    }
    ft.addToBackStack(null);

    DialogFragment newFragment = MyDialogFragment.newInstance();
    newFragment.show(ft, "dialog");

}

现在问题是这个对话框显示在不应该的选项卡上。

例如,我希望标签1 3和5显示对话框 - 有时它会显示它 - 但有时当我点击标签2时会出现此对话框,如果我点击3,则不会显示对话框。 可能是什么问题,我该如何解决?感谢

2 个答案:

答案 0 :(得分:1)

您是否尝试在onCreateView()或onActivityCreated()方法中调用showPopup()调用,而不是在onCreate()中调用?

编辑:根据下面的评论,问题与使用ViewPager相关联,后者准备一些下一个要查看的片段,然后调用onCreate()方法。

答案 1 :(得分:0)

所以我找到了一个解决方案 - 在每个片段中我覆盖一个名为setMenuVisibility的方法 - 并测试片段是否可见。如果是 - 我打电话给我的方法。