我有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 中。

09-10 07:01