Android 向DualPane(FragmentExample)DetailFragment中注入额外的

Android 向DualPane(FragmentExample)DetailFragment中注入额外的,android,android-fragments,roboguice,Android,Android Fragments,Roboguice,你好,伙计们 我是新来的RoboGuice,我很喜欢它。我正在基于Master/Detail-Flow-模板构建一个应用程序 当我单击列表元素时,我使用Extras将其传递给Detail片段。由于RoboGuice提供了它,我使用InjectExtra注释在片段端接收它 因此,Detail端看起来像这样(顺便说一下:Place是一个简单的、可序列化的pojo类) 这可以通过智能手机实现(因此,智能手机的单个窗格和每个片段都位于其自己的活动中) 但是当我使用双窗格(即在平板电脑模拟器上)时,我会得

你好,伙计们

我是新来的
RoboGuice
,我很喜欢它。我正在基于
Master/Detail-Flow
-模板构建一个应用程序

当我单击列表元素时,我使用
Extras
将其传递给
Detail片段。由于
RoboGuice
提供了它,我使用
InjectExtra
注释在
片段
端接收它

因此,
Detail
端看起来像这样(顺便说一下:Place是一个简单的、可序列化的
pojo类

这可以通过智能手机实现(因此,智能手机的单个窗格和每个
片段都位于其自己的
活动中

但是当我使用双窗格(即在平板电脑模拟器上)时,我会得到一个
com.google.inject.ProvisionException

03-13 10:32:51.824    1380-1380/de.NextBike E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: de.NextBike, PID: 1380
    com.google.inject.ProvisionException: Unable to provision, see the following errors:
    1) Error injecting de.NextBike.activity.ItemDetailFragment using roboguice.inject.ExtrasListener$ExtrasMembersInjector@5284c21c.
    Reason: java.lang.IllegalStateException: Can't find the mandatory extra identified by key [place] on field class de.NextBike.activity.ItemDetailFragment.place
    while locating de.NextBike.activity.ItemDetailFragment
    1 error
            at com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:464)
            at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67)
            at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:977)
            at roboguice.inject.ContextScopedRoboInjector.injectMembersWithoutViews(ContextScopedRoboInjector.java:247)
            at roboguice.fragment.provided.RoboFragment.onCreate(RoboFragment.java:21)
            at de.NextBike.activity.ItemDetailFragment.onCreate(ItemDetailFragment.java:84)
            at android.app.Fragment.performCreate(Fragment.java:1678)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
            at android.app.BackStackRecord.run(BackStackRecord.java:684)
            at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
            at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalStateException: Can't find the mandatory extra identified by key [place] on field class de.NextBike.activity.ItemDetailFragment.place
            at roboguice.inject.ExtrasListener$ExtrasMembersInjector.injectMembers(ExtrasListener.java:115)
            at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:140)
            at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
            at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
            at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059)
            at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
            at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62)
            at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:977)
            at roboguice.inject.ContextScopedRoboInjector.injectMembersWithoutViews(ContextScopedRoboInjector.java:247)
            at roboguice.fragment.provided.RoboFragment.onCreate(RoboFragment.java:21)
            at de.NextBike.activity.ItemDetailFragment.onCreate(ItemDetailFragment.java:84)
            at android.app.Fragment.performCreate(Fragment.java:1678)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
            at android.app.BackStackRecord.run(BackStackRecord.java:684)
            at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
            at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
我真的不明白为什么会发生这种情况,因为这对我很有效(在细节片段中;而不是
@inject
):

也许有人能帮我解释一下


提前谢谢。

这方面运气好吗?我也有同样的问题
03-13 10:32:51.824    1380-1380/de.NextBike E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: de.NextBike, PID: 1380
    com.google.inject.ProvisionException: Unable to provision, see the following errors:
    1) Error injecting de.NextBike.activity.ItemDetailFragment using roboguice.inject.ExtrasListener$ExtrasMembersInjector@5284c21c.
    Reason: java.lang.IllegalStateException: Can't find the mandatory extra identified by key [place] on field class de.NextBike.activity.ItemDetailFragment.place
    while locating de.NextBike.activity.ItemDetailFragment
    1 error
            at com.google.inject.internal.Errors.throwProvisionExceptionIfErrorsExist(Errors.java:464)
            at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:67)
            at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:977)
            at roboguice.inject.ContextScopedRoboInjector.injectMembersWithoutViews(ContextScopedRoboInjector.java:247)
            at roboguice.fragment.provided.RoboFragment.onCreate(RoboFragment.java:21)
            at de.NextBike.activity.ItemDetailFragment.onCreate(ItemDetailFragment.java:84)
            at android.app.Fragment.performCreate(Fragment.java:1678)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
            at android.app.BackStackRecord.run(BackStackRecord.java:684)
            at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
            at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalStateException: Can't find the mandatory extra identified by key [place] on field class de.NextBike.activity.ItemDetailFragment.place
            at roboguice.inject.ExtrasListener$ExtrasMembersInjector.injectMembers(ExtrasListener.java:115)
            at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:140)
            at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
            at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
            at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059)
            at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
            at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62)
            at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:977)
            at roboguice.inject.ContextScopedRoboInjector.injectMembersWithoutViews(ContextScopedRoboInjector.java:247)
            at roboguice.fragment.provided.RoboFragment.onCreate(RoboFragment.java:21)
            at de.NextBike.activity.ItemDetailFragment.onCreate(ItemDetailFragment.java:84)
            at android.app.Fragment.performCreate(Fragment.java:1678)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:859)
            at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
            at android.app.BackStackRecord.run(BackStackRecord.java:684)
            at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
            at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments().containsKey(ARG_ITEM_PLACE)) {
        this.place = (Place) getArguments().get(ARG_ITEM_PLACE);
    }
}