如何从意图和startActivityForResult()中抽象出来?

时间:2013-10-20 11:21:17

标签: android

我想为Android开发人员实现一个小开放库。该库包含一个Activity,它使用startActivityForResult()调用和接收参数,并使用onActivityResult()返回结果。我想从意图和开发人员中抽象出来并为它实现一些帮助类。我看到两种方式:

  1. 扩展活动并建议开发人员从我在库中定义的类扩展他的活动。这很容易,但不方便,因为开发人员的项目可能需要从另一个库扩展。

  2. 将一些Class get Activity作为参数并在回调方法中返回结果:

    Class HelperClass {
    
        Activity mActivity;
    
        HelperClass(Activity activity) {
            mActivity=activity;
        }
    
        void setOption1() {
            ...
        }
    
        void setOption2() {
            ...
        }
    
        void start() {
            Intent intent = new Intent(mActivity, MyActivity.class);
            mActivity.startActivityForResult(intent, 0);
        }
    
        // This method unavailable in this case
        // public void onActivityResult(int requestCode, int resultCode, Intent data) {
        //
        // }
    }
    
  3. 这种方式最抽象,但也有一些麻烦。首先 - 如何从Activity接收数据?静电场?我认为这不是最好的方式。将Activity作为参数传递是否正确?

    可能在这里有另一种实现方式吗?请指教。

1 个答案:

答案 0 :(得分:0)

我不明白为什么你需要一个中间层。如果您从活动A开始使用startActivityForResult()的活动B,则会在活动A中调用onActivityResult(),而不是B.

如果问题是您想要将参数传递给您的活动,那么请使用intent extras:

Intent intent = new Intent(this, MyActivity.class);
intent.putExtra("option1", value1);
intent.putExtra("option2", value2);
startActivityForResult(intent, 0);

您可以使用onCreate()的{​​{1}}方法轻松检索它们:

MyActivity