fragmentでOnActivity Resultを実行する問題
2233 ワード
解決策はactivity呼び出しを追加することです
ベースクラスActivityでのコード実装
FramentFirstで呼び出す
原理:
BaseActivityでonActivity Result()を書き換え、execOnActivity Result()を返します.
BaseFramentでexecOnActivity Result()を書き換えました
最後に使用したFramentで呼び出します
補足:
1.Activityで書いたcaseでFragmentに戻る
2.Framentでコールバック
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;
}
}