2014-01-15 3 views
2

У меня есть несколько Actiobar с 5 вкладками с фрагментом. В 3 этих фрагментах я хочу показать диалог, поэтому я создал новый класс:Показать Диалог Фрагмент в ActionBar.Tab фрагменты

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; 
     } 
    } 

В каждом OnCreate метода этого 3 фрагментов я пытаюсь показать диалог с помощью этого метода:

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, диалог не отображается. Что может быть проблемой и как ее исправить? Спасибо

ответ

1

Вы пытаетесь переместить вызов showPopup() в onCreateView() или в методах onActivityCreated(), а не в onCreate() one?

EDIT: В соответствии с приведенными ниже замечаниями проблема связана с использованием ViewPager, который готовят некоторые следующие фрагменты для просмотра, а затем вызывает методы onCreate().

+0

Я попытался добавить showPopup() в onCreateView(), но способ отображения диалога довольно случайный. Я могу понять, почему? – Alin

+0

Вы заметили некоторые изменения? – lithos35

+0

прямо сейчас кажется, что всплывающее окно отображается дважды - например, всплывающее окно в 3 и 5 показано, когда я нажимаю вкладку 2 - но это не поведение каждый раз – Alin

0

Итак, я нашел решение - во всех фрагментах я переопределяю метод, называемый setMenuVisibility, и проверяем, является ли фрагмент видимым. Если это так - я вызываю свой метод.

Смежные вопросы