2013-03-23 47 views
2

如何在自定義模塊中獲取應用上下文?這裏是我的模塊代碼:RoboGuice自定義模塊應用上下文

public class MyModule extends AbstractModule { 
    @Override 
    @SuppressWarnings("unchecked") 
    protected void configure() { 
     // Package Info 
     try { 
      final PackageInfo info = application.getPackageManager().getPackageInfo(
        application.getPackageName(), PackageManager.GET_META_DATA); 
      bind(PackageInfo.class).toInstance(info); 
     } catch (PackageManager.NameNotFoundException e) { 
      throw new RuntimeException(e); 
     } 
    } 
} 

我想獲取應用程序的元數據。 PackageInfo的默認模塊版本沒有元數據,因此我需要自定義綁定。

回答

3

只是把它注射在構造函數中

public final class MyModule extends AbstractModule 
{ 
    private final Context context; 

    @Inject 
    public MyModule(final Context context) 
    { 
     super(); 
     this.context = context; 
    } 

    @Override 
    @SuppressWarnings("unchecked") 
    protected void configure() { 
     // Package Info 
     try { 
      final PackageInfo info = context.getPackageManager().getPackageInfo(
       context.getPackageName(), PackageManager.GET_META_DATA); 
      bind(PackageInfo.class).toInstance(info); 
     } catch (PackageManager.NameNotFoundException e) { 
      throw new RuntimeException(e); 
     } 
    } 

}

+0

我試過,但沒有奏效。我懷疑我失去了一些東西明顯。你知道RoboGuice 2.0使用自定義模塊的完整例子嗎? RoboGuice的默認示例不使用自定義模塊。 –

+0

@Mubix這部分來自一個正在運行的應用程序。這是什麼意思,不起作用?如果上下文無效或無效,我會嘗試注入_ContextProvider_而不是上下文。 –