从非活动使用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开始活动。

更好的解决办法是

  1. 使SimpleClass成为Activity类的一个子类
  2. 调用另一个Activity作为startActivityForResult
  3. SimpleClass处理结果