从非活动使用startActivityForResult
我有MainActivity这是一个活动和其他类(这是一个简单的Java类),我们将其称为“SimpleClass”。 现在我想从该类运行startActivityForResult命令。
现在我虽然我可以通过该类(SimpleClass),只有MainActivity的上下文,问题是,你不能运行context.startActivityForResult(…);
所以使SimpleClass使用“startActivityForResult; 是将MainActivity的引用作为一个Activityvariables传递给SimpleClass,就像这样:
在MainActivity类中,我通过这种方式创buildSimpleClass的实例:
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得到结果,那么你的调用类需要是Activitytypes的。
 如果您从不使用结果(至less根据您发布的示例代码Activity.startActivityForResult()则调用Activity.startActivityForResult()的目的是什么? 
  myMainActivity是否对结果做任何事情? 如果是这样,那么SimpleClass作为Activity的一个子类,然后处理SimpleClass本身的结果。 
 如果myMainActivity需要结果,那么也许你应该重构代码以从myMainActivity开始活动。 
更好的解决办法是
-  使SimpleClass成为Activity类的一个子类
-  调用另一个Activity作为startActivityForResult
-  在SimpleClass处理结果