Hatena::Groupsubtech

冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

 | 

Jan 18, 2011 (Tue)

Android の、こうであって欲しいところ:startActivityForResult のインターフェイス 18:54 はてなブックマーク - Android の、こうであって欲しいところ:startActivityForResult のインターフェイス - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。

なんかあの、startActivityForResult と onActivityResult による処理の分断感と、requestCode まわりの感じが気持ちわるくてしかたないので、以下のようなインターフェイスならいいのになあ……とよく思うんですが、こうなってないのはなんででしょうかね……

        startActivityForResult(intent, new ActivityResultHandler() {
            public void run (int resultCode, Intent data) {
                if (resultCode == RESULT_OK) {

                }
            }
        });

実装自体は簡単なんですが、Java は mix-in できないので使いにくいのですよね……

    interface ActivityResultHandler {
        void run (int resultCode, Intent data);
    }

    protected HashMap<Integer, ActivityResultHandler> mActivityResultHandlers = new HashMap<Integer, ActivityResultHandler>();
    protected void startActivityForResult(Intent intent, ActivityResultHandler handler) {
        int code = handler.hashCode();
        mActivityResultHandlers.put(code, handler);
        startActivityForResult(intent, code);
    }

    @Override
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        ActivityResultHandler handler = mActivityResultHandlers.remove(requestCode);
        handler.run(resultCode, data);
    }
 | 

スポンサード リンク

書いてる人

cho45 (佐藤広央) (www.lowreal.net)

Perl, JavaScript, Ruby, HTML, CSS, Web etc


スポンサード リンク