fragmentでOnActivity Resultを実行する問題

2233 ワード

解決策はactivity呼び出しを追加することです
activity.startActivityForResult(intent, RESULT_CODE_SELECT_PIC);

ベースクラスActivityでのコード実装
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(null != fragmentTabContentAdapter){
            for(int i=0;i

FramentFirstで呼び出す
@Override
    public void execOnActivityResult(int requestCode, int resultCode, Intent data) {
        super.execOnActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case RESULT_CODE_SELECT_PIC:
                if (data == null) return;
                if (resultCode == RESULT_OK) {
                    ArrayList result = data.getStringArrayListExtra(PhotoPickerActivity.KEY_RESULT);
                    String picFile = result.get(0);
                    if(!TextUtils.isEmpty(picFile)){
                      ImageLoader.getInstance().displayImage("file:///"+picFile,iv_user_header);
                    }
                }
                break;
        }
    }

原理:
BaseActivityでonActivity Result()を書き換え、execOnActivity Result()を返します.
BaseFramentでexecOnActivity Result()を書き換えました
最後に使用したFramentで呼び出します
補足:
1.Activityで書いたcaseでFragmentに戻る
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch(resultCode){
            case 1:// Fragment 
               super.onActivityResult(requestCode,resultCode,data);
                break;
           case 2:
                super.onActivityResult(requestCode,resultCode,data);
                break;
             ......
        }
    }

 2.Framentでコールバック
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (resultCode){
            case 1:// FragmentActivity 
                // 
                break;
            case 2:
                break;
  
        }
    }