У меня есть одно действие с ViewGroup, которое я хочу использовать для замены на пару фрагментов в зависимости от потока пользователя (так что я либо покажу один фрагмент, либо другой).Мгновенно активировать фрагменты Android при использовании Roboguice Dependency Injection
(...)
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="276dp"
android:layout_gravity="center_horizontal|bottom">
</FrameLayout>
(...)
Чтобы установить фрагмент, я использую следующий код:
private void setBottomFragment(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
Если я создаю экземпляр фрагмента сам с новым, он работает:
setBottomFragment(new InformationFragment());
Однако, я не Я не хочу сам создавать экземпляр. Я хочу, чтобы мои экземпляры фрагмента будет управляться моей структуры управления зависимостями (я использую Roboguice)
Так что я хотел бы сделать что-то вроде этого:
@ContentView(R.layout.activity_scan)
public class ScanActivity extends RoboFragmentActivity {
@InjectFragment(R.id.information_fragment)
private InformationFragment informationFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setBottomFragment(informationFragment);
}
}
Делая это, я буду способный использовать инъекцию зависимостей также на моих Фрагментах, вместо того, чтобы самостоятельно находить компоненты.
public class InformationFragment extends RoboFragment {
// I'll have an event handler for this button and I don't want to be finding it myself if I can have it injected instead.
@InjectView(R.id.resultButton)
private Button resultButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_information, container, false);
}
}
Так в основном мой вопрос: как я могу programaticly экземпляр фрагмента при использовании рамки инъекции зависимостей, как Roboguice?
Все, что я могу найти в документации Roboguice, являются примерами DI с фрагментами, которые изначально визуализируются с представлением и не динамически добавляются впоследствии, как я пытаюсь сделать. Это заставляет меня поверить, что я что-то пропускаю либо в жизненном цикле компонентов, либо в том, как Roboguice обрабатывает DI.
Любые идеи исправить это или указатели в правильном направлении были бы очень полезными.
ли вы реализовать метод жизненного цикла onCreateView в вашем фрагменте, где расположение получает надувают? –
Да, я создал метод. Или IDE сделал, когда я создал фрагмент. Я отредактирую исходный вопрос, чтобы сказать это. – redwulf