web-dev-qa-db-ja.com

Fragment内でOnActivityResultを呼び出すにはどうすればよいですか?

onActivityResult()でFragment内で使用できるかどうかを知りたい場合は、例で説明してください。

19
Shweta Nandha

あなたは電話するでしょう:

startActivityForResult(i, 1);

その後:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
   //super.onActivityResult(requestCode, resultCode, data); comment this unless you want to pass your result to the activity.
}
20
HaroldSer

アクティビティでこのコードを使用します。

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    Fragment fragment = (Fragment) getSupportFragmentManager().findFragmentByTag(childTag);
    if (fragment != null) {
        fragment.onActivityResult(requestCode, resultCode, intent);
    }
}
3
Android Geek

間違いなく機能します。アクティビティと同じように機能します。 startActivityForResult(intent, requestCode);を呼び出し、通常は次の結果を取得します。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
}
3
Ajeet Choudhary

はい、Fragment.like内でOnActivityResultを使用できます

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
// perform your action here
}

今、あなたはこのようにonActivityResultを呼び出します

getActivity().startActivityForResult(). 

[〜#〜] edit [〜#〜]

上記の答えは古いです

ここで更新された答えを確認してください https://stackoverflow.com/a/17085889/7666442

2
Nilesh Rathod

fragmentでstartActivityForResult()を呼び出すと、結果は親アクティビティに配信されます。

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);//will deliver result to desired fragment.
}

仕組み

アクティビティにrequestCodeが表示される場合、655545のようになります。

super.onActivityResult()は、必要なフラグメントと要求コードを計算します。

viewPagerのフラグメントに必要なフラグメントインデックスが使用されている場合

requestCode>>16

requestCodeはrequestCode&0xffff

1
Rahul Devanavar