2016-12-21 8 views
0

Я хочу создать класс @EBean со всеми функциями, связанными с отображением и скрытием ProgressDialog и DialogFragment. Пример: Мне нужно, чтобы показать ErrorDialogFragment внутри Fragment, так getChildFragmentManager() необходимо в этом коде ниже:Вызов getChildFragmentManager внутри класса EBean с помощью AndroidAnnotation

ErrorDialogFragment.showDefaultDialog(getChildFragmentManager(), 
        "Device is disconected!"); 

Есть ли способ вызвать getChildFragmentManager() внутри @EBean класса?

ответ

1
@EBean 
public class YourBean { 

    @RootContext 
    FragmentActivity activity; 

    public void showDialog() { 
    activity.getSupportFragmentManager(). ... 
    } 
} 

Однако убедитесь, что вы только вводить этот компонент в FragmentActivity, потому что в противном случае сама Activity не будет введен в бобе.

Редактировать: Вы не можете вводить FragmentManager или Fragment фасоли с аннотациями. Вы должны создать метод установки для этого:

@EBean 
public class YourBean { 

    private FragmentManager fragmentManager; 

    public void showDialog() { 
    ErrorDialogFragment.showDefaultDialog(fragmentManager, 
       "Device is disconected!"); 
    } 

    public void setFragmentManager(FragmentManager fragmentManager) { 
    this.fragmentManager = fragmentManager; 
    } 
} 

В вашей Fragment:

@AfterInject 
void afterInject() { 
    yourBean.setFragmentManager(getChildFragmentManager()); 
} 
+0

Я знаю свой путь, но я хочу, чтобы '' inject' в Bean' к моему 'BaseFragment' и показать 'Dialog' внутри' Fragment', а не 'FragmentActivity'. Как это сделать? – NamNH

+0

Я обновил ответ. – WonderCsabo

+1

спасибо! Я принял ваш ответ. – NamNH