0

Android 開発者向けの小さなオープン ライブラリを実装したいと考えています。このライブラリには、startActivityForResult() でパラメーターを呼び出して受け取り、onActivityResult() で結果を返す 1 つのアクティビティが含まれています。および開発者のインテントから抽象化し、そのためのヘルパー クラスを実装したいと考えています。私は2つの方法を見ます:

  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 をパラメーターとして渡すのは正しいですか?

これを実装する別の方法が利用可能ですか?お知らせ下さい。

4

1 に答える 1

0

中間層が必要な理由がわかりません。startActivityForResult()アクティビティ A からアクティビティ B を開始すると、アクティビティ BonActivityResult()ではなくアクティビティ A で呼び出されます。

問題がアクティビティに引数を渡したい場合は、インテント エクストラを使用します。

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 に答える