Jul*_* A. 2 android guice roboguice android-activity
有没有办法使用Roboguice将Android Activity子类注入POJO?
小智 6
首先这是我在这里发表的第一篇文章,所以我很勇敢,希望我能回答你的问题,希望我一开始就不会进入负数.
我记得在过去的几天里我刚刚发现了Roboguice,所以希望我能在这里帮忙.如果我对通常的Java风格有不正确的语法,那么我第一次尝试使用.Net这么多道歉.
我想这取决于你想要的Activity,创建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);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我已经为RoboGuice配置了模块,知道如何绑定ITestPojo和IMySecondActivity.
让我们假设我们当前正在进行MyActivity活动,当它启动时,会注入一个TestPojo实例.在此注入期间,它的构造函数被调用,TestPojo构造函数的参数被解析,IMySecondActivity通过绑定和来自包含MyActivity的Activity.
但是,我想在这种情况下必须要谨慎,因为testPojo在MyActivity中仍然是null,因为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();
}
Run Code Online (Sandbox Code Playgroud)
在TestPojo类中,以便稍后可以询问提供程序在其使用的位置检索Activity.
如果您知道pojo将要使用的活动类型,那么您可以使用Provider<MyActivity>.
我希望这会有所帮助:-)
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |