我有MainActivity这是一个Activity和其他类(这是一个简单的java类),我们将其称为“SimpleClass”。
现在我想从该类运行命令startActivityForResult。
现在我虽然可以通过该类(SimpleClass),但是只有MainActivity的上下文,问题是,您不能运行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(...);
}
}
现在可以正常工作了,但是不是正确的方法吗?恐怕将来我可能会发生一些内存泄漏。
谢谢。
射线。
最佳答案
我不知道这是否是个好习惯,但是casting a Context object to an Activity object
可以编译。
试试这个:
if (mContext instanceof Activity) {
((Activity) mContext).startActivityForResult(...);
} else {
Log.e("mContext should be an instanceof Activity.");
}
应该进行编译,并将结果传递到具有上下文的实际 Activity 中。