Во-первых, это мой первый пост здесь, поэтому я храбрый и, надеюсь, я смогу ответить на ваш вопрос, и, надеюсь, не стану переходить к отрицательным цифрам, как только начну.
Не берите в голову, что у меня естьтолько что обнаружил Roboguice за последние пару дней, так что я надеюсь, что смогу помочь здесь.Также мой первый удар по Java от использования .Net, так что я извиняюсь, если у меня неправильный синтаксис для обычного стиля Java.
Я думаю, это зависит от того, какое действие вы хотите, действие, которое создает экземпляр объекта.Pojo или другое занятие.
Я постараюсь привести здесь пример того, что я настроил и опробовал.
public interface IMySecondActivity {}
public class MySecondActivity extends RoboActivity implements IMySecondActivity {}
public interface ITestPojo {}
public class TestPojo implements ITestPojo
{
@Inject public TestPojo(IMySecondActivity mySecondActivity, Activity activity)
{
//So at this point here mySecondActivity is an instance of IMySecondActivity
//set up by roboguice
//and activity is the activity which created this TestPojo
}
}
public class TestAppModule extends AbstractAndroidModule
{
@Override protected void configure()
{
bind(ITestPojo.class).to(TestPojo.class);
bind(IMySecondActivity.class).to(MySecondActivity.class);
}
}
public class MyActivity extends RoboActivity implements IMyActivity
{
@Inject ITestPojo testPojo;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Поэтому я настроил модуль для RoboGuice, чтобы узнать, каксвязать ITestPojo и IMySecondActivity.
Предположим, что в данный момент мы находимся на активности MyActivity, когда она запускается, в нее внедряется экземпляр TestPojo. Во время этой инъекции вызывается его конструктор, и параметры конструктора TestPojo разрешаются, IMySecondActivity через привязкуАктивность из содержащей MyActivity.
Однако, я думаю, что в этой ситуации нужно будет позаботиться, так как testPojo по-прежнему будет нулевым внутри MyActivity, поскольку TestPojo все еще находится в разработке.
Существует такжедругим способом мы могли бы получить Activity, а именно использовать Provider
Provider<Activity> activityProvider;
public TestPojo(Provider<Activity> activity)
{
activityProvider = activity;
}
public void Test()
{
//This should retrieve your activity.
Activity activity = activityProvider.get();
}
в классе TestPojo, чтобы у поставщика можно было позднее запросить получение Activity в точке, где оно использовалось.
Если вы знаете тип деятельности, которую будет использовать ваше pojo, тогда вы можете использовать Provider<MyActivity>
.
Надеюсь, это поможет: -)