从非活动中使用 startActivityForResult

新手上路,请多包涵

我有 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 许可协议

阅读 304
1 个回答

我不知道这是否是好的做法,但是 casting a Context object to an Activity object 编译得很好。

尝试这个:

 if (mContext instanceof Activity) {
        ((Activity) mContext).startActivityForResult(...);
} else {
        Log.e("mContext should be an instanceof Activity.");
}

这应该编译,结果应该传递给持有上下文的实际活动。

原文由 Some Noob Student 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题