14

我在寻找使用片段 + RoboGuice 的工作示例时遇到问题。当您尝试使用 Android 片段事务管理器添加/删除片段时,就会出现问题。一旦您告诉片段从 RoboFragment 继承,事务管理器就不再认为该类是片段(因为它扩展了 RoboFragment)。但是,您可以使用 RoboGuice 自己的片段管理器,但它也会崩溃。有没有动态添加/删除 RoboGuice 片段的示例?

4

2 回答 2

13

我最近开始在一个新项目上使用片段,以下是我正在使用的代码

我不是从 RoboFragment 类继承的,但我通过在我的 onCreate 和 onViewCreated 方法中添加以下几行来做完全相同的事情。从 RoboFragment 继承不应该有任何不同,实际上这就是 RoboFragment 的样子。

public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    RoboGuice.getInjector(getActivity()).injectMembersWithoutViews(this);
}

public void onViewCreated(final View view, final Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    RoboGuice.getInjector(getActivity()).injectViewMembers(this);
    // Do whatever with your injected views.
}

显然我也实现了onCreateView。

然后,在我的 Activity 中,我在使用兼容性包时扩展了 FragmentActivity 。请注意,如果您希望与 pre API 级别 11 兼容,则必须使用 FragmentActivity。如果您只支持 11 plus,则不需要兼容性库或使用 FragmentActivity。然后在我的活动中,我使用以下内容将片段添加到我的页面。

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragmentHolder, new MyFragment());
transaction.commit();

R.id.fragmentHolder 的类型是 FrameLayout。

一切正常,我可以在我的片段中使用我注入的所有资源和视图。为了完整起见,我使用最新的 2.0-SNAPSHOT 的 roboguice 以及针对 Android 2.2.1 的兼容 v4 库的 r6 版本。

于 2012-01-20T11:27:38.023 回答
0

Roboguice 1.x 与兼容库和片段不兼容。您要么必须移动处于测试阶段的 2.0,要么自己扩展 Fragment* 类。

更多信息请访问:

http://groups.google.com/group/roboguice/browse_thread/thread/2858bc10b83b6beb

于 2011-12-15T05:36:22.867 回答