我有 MainActivity,它是一个 Activity 和其他类(这是一个简单的 java 类),我们将其称为“SimpleClass”。
现在我想从那个类运行命令 startActivityForResult
。
我虽然可以仅使用 MainActivity 的上下文传递该类 (SimpleClass),但问题是我们无法运行 context.startActivityForResult(...);
。
因此,使 SimpleClass 使用 startActivityForResult
的唯一方法是将 MainActivity 的引用作为 Activity 变量传递给 SimpleClass。
像这样的东西:
在 MainActivity 类中,我像这样创建了 SimpleClass 的实例:
SimpleClass simpleClass = new SimpleClass(MainActivity.this);
现在,这就是 SimpleClass 的样子:
public Class SimpleClass {
Activity myMainActivity;
public SimpleClass(Activity mainActivity) {
super();
this.myMainActivity=mainActivity;
}
....
public void someMethod(...) {
myMainActivity.startActivityForResult(...);
}
}
现在它正在工作,但是没有正确的方法吗?恐怕我将来可能会发生一些内存泄漏。
原文由 rayman 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不知道这是否是好的做法,但是
casting a Context object to an Activity object
编译得很好。尝试这个:
这应该编译,结果应该传递给持有上下文的实际活动。