gpt4 book ai didi

android - 使用 Roboguice 将 Android Activity 注入(inject) POJO

转载 作者:太空狗 更新时间:2023-10-29 16:23:11 25 4
gpt4 key购买 nike

有没有办法使用 Roboguice 将 Android Activity 子类注入(inject)到 POJO 中?

最佳答案

首先,这是我在这里发表的第一篇文章,所以我很勇敢,希望我能回答你的问题,并希望我一开始就不会陷入负数。

切记,我最近几天才发现 Roboguice,所以希望我能在这里提供帮助。这也是我第一次使用 .Net 尝试 Java,如果我对通常的 Java 风格有不正确的语法,我深表歉意。

我想这取决于您想要哪个 Activity,创建 Pojo 实例的 Activity 或其他 Activity。

我将尝试在这里举一个例子来说明我设置和尝试的内容。

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 配置了模块以了解如何绑定(bind) ITestPojo 和 IMySecondActivity。

假设我们当前在 MyActivity Activity 上,当它启动时,将注入(inject)一个 TestPojo 实例。在此注入(inject)期间,调用其构造函数并解析 TestPojo 构造函数的参数,IMySecondActivity 通过绑定(bind)和 Activity 来自包含 MyActivity。

但是,我想必须小心处理这种情况,因为 TestPojo 在 MyActivity 中仍然为 null,因为 TestPojo 仍在构建中。

还有另一种获取 Activity 的方法,那就是使用提供者

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 将要使用的 Activity 类型,那么您可以使用 Provider<MyActivity>相反。

我希望这对您有所帮助:-)

关于android - 使用 Roboguice 将 Android Activity 注入(inject) POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9340625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com