onActivityResult()
でFragment内で使用できるかどうかを知りたい場合は、例で説明してください。
あなたは電話するでしょう:
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.
}
アクティビティでこのコードを使用します。
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);
}
}
間違いなく機能します。アクティビティと同じように機能します。 startActivityForResult(intent, requestCode);
を呼び出し、通常は次の結果を取得します。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
はい、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
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
。