1
下面是LoginActivity類如何將所有值存儲到從dagger2注入的類對象?
@Inject
User injectedUser;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.login2);
MyApp.getComponent(this).inject(this); // injection completed here
}
@Subscribe public void onLoginCompleted(UserResultEvent event)
{
Log.e(" Finding ", injectedUser.getAuthTokenWebService());
User user = event.user;
injectedUser = user; // injectedUser looses values for next activity
// By setting each value as shown in given below two lines,
//I am able to get values on another activity, in my case, DashBoard class
//injectedUser.setAuthTokenWebService(user.getAuthTokenWebService());
//injectedUser.setUserId(user.getUserId());
Intent intent = new Intent(LoginActivity.this, Dashboard.class);
startActivity(intent);
}
下面是我簡單的匕首模塊類
@Module
public class MyAppModule
{
private final MyApp app;
public MyAppModule(MyApp app) { this.app = app; }
@Provides @Singleton MyApp provideMyApp() { return app; }
@Provides @Singleton
Application provideApplication(MyApp app) { return app; }
// getting User Object
@Provides @Singleton
User provideUser(){ return new User(); }
}
和我最後的儀表盤活動類是
@Inject
User user;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.dashb_main);
MyApp.getComponent(this).inject(this);
// Here is the problem,
Log.e("Dashboard ", String.valueOf(user.getAuthTokenWebService()));
}
Log.e("Dashboard ", String.valueOf(user.getAuthTokenWebService()));
給了我AuthToken的默認值,但它應該打印不同的值,因爲它在LoginActivity類中設置,即injectedUser = user;
但是這行不起作用,因爲injectUser變量不會保留下一個活動的值,但是它被設置爲singleton in匕首提供者用戶方法。
我不想設定每個值從Web服務獲得通過如下圖所示
injectedUser.setAuthTokenWebService(user.getAuthTokenWebService());
injectedUser.setUserId(user.getUserId());
是這樣工作的,但是否有其他方式injectedUser可以有用戶對象從獲取的值相同輸入代碼服務或我必須設置每個值如上所示?
我發現一個黑客...那一世。在用戶類中創建用戶引用,並通過setter或getter設置並獲取用戶,或者在構造函數User(新用戶())中傳遞它 –