0

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

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

  2. 使一些类获取活动作为参数并在回调方法中返回结果:

    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) {
        //
        // }
    }
    

这种方式最抽象,但也有一些麻烦。首先 - 如何从 Activity 接收数据?静态场?我认为这不是最好的方法。将 Activity 作为参数传递是否正确?

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

4

1 回答 1

0

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

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

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

onCreate()您可以通过以下方法轻松检索它们MyActivity

int option1 = getIntent().getIntExtra("option1", 0);
int option2 = getIntent().getIntExtra("option2", 0);
于 2013-10-20T12:10:47.323 回答