onActivityResult가 fragment에서 호출되지 않습니다.
이 조각을 호스팅하는 활동은 다음과 같습니다.onActivityResult카메라 활동이 되돌아오면 호출됩니다.
내 조각은 카메라가 사진을 찍도록 전송된 의도로 결과에 대한 활동을 시작합니다.사진 응용 프로그램이 정상적으로 로드되고 사진을 찍고 돌아갑니다. 그onActivityResult하지만 절대 맞지 않습니다.중단점을 설정했지만 아무것도 트리거되지 않습니다.조각이 가질 수 있습니까?onActivityResult제공되는 기능이기 때문에 그렇게 생각합니다.왜 이것이 트리거되지 않습니까?
ImageView myImage = (ImageView)inflatedView.findViewById(R.id.image);
myImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 1888);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == 1888 ) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
((ImageView)inflatedView.findViewById(R.id.image)).setImageBitmap(photo);
}
}
은 호스활재됩니다의정이를 재정의합니다.onActivityResult()하지만 그것은 전화를 하지 않았습니다.super.onActivityResult()처리되지 않은 결과 코드의 경우.보아하니, 비록 그 조각이 그를 만드는 것이지만.startActivityForResult()호출, 활동은 결과를 처리하는 첫 번째 기회를 얻습니다.이것은 조각의 모듈화를 고려할 때 의미가 있습니다.가 후한현을 했을 때super.onActivityResult()처리되지 않은 모든 결과에 대해, 조각은 결과를 처리할 수 있는 기회를 얻었습니다.
그리고 @siqing 답변에서도 다음과 같이 답합니다.
파편에 대한 결과를 얻으려면 전화를 해야 합니다.startActivityForResult(intent,111);에 getActivity().startActivityForResult(intent,111);당신의 파편 안에.
하신 것 요.getActivity().startActivityForResult(intent,111);당신은 보화해에 전화해야 .startActivityForResult(intent,111);.
옵션 1:
전화하시는 경우startActivityForResult()그 파편에서 전화를 해야 합니다.startActivityForResult(),것은 아니다.getActivity().startActivityForResult()Activity Result()는 fragment입니다.
어디로 전화를 건 건지 잘 모르실 경우startActivityForResult()그리고 당신이 어떻게 메소드를 호출할 것인지.
옵션 2:
은 활은다음결얻과때다기의 를 얻기 입니다.onActivityResult()활동의 작업을 재정의해야 합니다.onActivityResult() 와를 요.super.onActivityResult()처리되지 않은 결과 코드에 대해 또는 모두에 대해 각 fragment로 전파합니다.
위의 두 가지 옵션이 작동하지 않으면 옵션 3을 참조하십시오. 확실히 작동합니다.
옵션 3:
fragment에서 onActivityResult 함수로의 명시적 호출은 다음과 같습니다.
상위 활동 클래스에서 onActivityResult() 메서드를 재정의하고 Fragment 클래스에서 동일한 메서드를 재정의하고 다음 코드로 호출합니다.
상위 클래스:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.dualPane);
fragment.onActivityResult(requestCode, resultCode, data);
}
하위 클래스:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// In fragment class callback
}
활동에서 조각을 모르는 경우, 모든 조각을 열거하고 활동 결과 인수를 전송합니다.
//자바
// In your activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
//코틀린
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
for (fragment in supportFragmentManager.fragments) {
fragment.onActivityResult(requestCode, resultCode, data)
}
}
를 안고 있습니다.ChildFragmentManager관리자가 결과를 중첩된 조각으로 전달하지 않으므로 기본 조각에서 수동으로 전달해야 합니다.
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Fragment fragment = (Fragment) getChildFragmentManager().findFragmentByTag(childTag);
if (fragment != null) {
fragment.onActivityResult(requestCode, resultCode, intent);
}
}
FragmentActivity를 대체합니다.requestCode수정된 것으로그 후에, 언제onActivityResult()FragmentActivity상위 16비트를 구문 분석하고 원본 Fragment의 인덱스를 복원합니다.체계를 : 성구표를보십오시이오.

루트 레벨에 몇 개의 조각이 있으면 문제가 없습니다.그러나 예를 들어, 중첩된 조각이 있는 경우Fragment에 탭이 몇개있는 안에 몇 의 탭이 ViewPager문제에 직면할 것임을 보장합니다(또는 이미 직면했습니다).
내부에 인덱스가 하나만 저장되어 있기 때문입니다.requestCode그것은 의 색인입니다.Fragment 부에 에.FragmentManager중첩된 조각을 사용하는 경우 하위 조각이 있습니다.FragmentManagerfragments 목록인 fragment 목고있이다니를 의 전체 따서서에시여작전하체합니다저장체부터 저장해야 합니다FragmentManager.

이 문제를 어떻게 해결합니까?이 게시물에는 일반적인 해결 방법이 있습니다.
GitHub: https://github.com/shamanland/nested-fragment-issue
Android Navigation Component를 사용하는 사용자는 활동에서 를 사용해야 합니다.onActivityResult(...)그자리의 primaryNavigationFragmentfragment를 합니다.fragment.onActivityResult(...).
의 앨범이 있습니다.onActivityResult(...)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageData)
{
super.onActivityResult(requestCode, resultCode, imageData);
for (Fragment fragment : getSupportFragmentManager().getPrimaryNavigationFragment().getChildFragmentManager().getFragments())
{
fragment.onActivityResult(requestCode, resultCode, imageData);
}
}
여러 중첩된 조각의 경우(예: 조각에서 ViewPager를 사용하는 경우)
주요 활동:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
조각에서:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
for (Fragment fragment : getChildFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
중첩된 조각에서
통화 활동
getParentFragment().startActivityForResult(intent, uniqueInstanceInt);
uniqueInstanceInt - 다른 fragment가 응답을 처리하지 않도록 중첩된 fragment 중에서 고유한 int로 대체합니다.
응답 수신
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == uniqueInstanceInt ) {
// TODO your code
}
}
주의
"RequestCode에 하위 16비트만 사용할 수 있습니다." 오류를 방지하려면 uniqueInt에 0에서 65536 사이의 숫자를 사용해야 합니다.
나는 또한 이 코드 블록을 프래그먼트 외부의 유틸리티 클래스로 이동했을 때 같은 문제에 직면했습니다.parentActivity논쟁으로 통과되었습니다.
Intent intent = new Intent(parentActivity, CameraCaptureActivity.class);
parentActivity.startActivityForResult(intent,requestCode);
그 후에 저는 어떤 가치도 얻지 못했습니다.onActivityResult그 프래그먼트의 방법, 그 후에, 나는 주장을 프래그먼트로 바꾸었고, 그래서 방법의 개정된 정의는 다음과 같이 보였습니다.
Intent intent = new Intent(fragment.getContext(), CameraCaptureActivity.class);
fragment.startActivityForResult(intent,requestCode);
그 후, 저는 가치를 얻을 수 있었습니다.onActivityResult단편 위에
Mohit Mehta의 답변에 영감을 받아 Android Navigation Component를 사용하는 사람들을 위한 Kotlin 버전.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
supportFragmentManager.primaryNavigationFragment?.childFragmentManager?.fragments?.forEach { fragment ->
fragment.onActivityResult(requestCode, resultCode, data)
}
}
만약 누군가가 여전히 그것을 할 수 없다면 나는 두 가지 조언을 추가할 수 있습니다.Manifest.xml 파일에서 콜백할 때 호스팅 작업이 완료되지 않았는지, 시작할 작업이 시작 모드를 표준으로 가지고 있는지 확인합니다.아래와 같이 세부 정보를 참조하십시오.
Hosting 활동의 경우 no history 속성이 있으면 false로 설정합니다.
android:noHistory="false"
시작할 활동에 대해 시작 모드를 표준으로 설정합니다.
android:launchMode="standard"
중첩된 조각의 경우(예: ViewPager를 사용하는 경우)
주요 활동:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
기본 최상위 조각(ViewPager 조각):
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
YourFragment frag = (YourFragment) getChildFragmentManager().getFragments().get(viewPager.getCurrentItem());
frag.yourMethod(data); // Method for callback in YourFragment
super.onActivityResult(requestCode, resultCode, data);
}
당신의 단편(내포된 단편)에서:
public void yourMethod(Intent data){
// Do whatever you want with your data
}
저는 또한 단편에서 이 문제를 만났습니다.그리고 전화했습니다.startActivityForResult순식간에DialogFragment.
하지만 이제 이 문제는 해결되었습니다.
FragmentClassname.this.startActivityForResult.
저의 경우 안드로이드 버그였습니다(지원되는 제품을 사용하는 경우 http://technet.weblineindia.com/mobile/onactivityresult-not-getting-called-in-nested-fragments-android/), ).FragmentActivity은 야합니다해사를 사용해야 .getSupportFragmentManager에 getChildFragmentManager:
List<Fragment> fragments = getSupportFragmentManager().getFragments();
if (fragments != null) {
for (Fragment fragment : fragments) {
if(fragment instanceof UserProfileFragment) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
}
요컨대,
조으로선니다합언각다니,▁declare▁in▁fragment합을 선언합니다.Fragment fragment = this;
에는 그사후용을 합니다.fragment.startActivityForResult.
결과는 작업 결과로 반환됩니다.
솔루션 1:
러startActivityForResult(intent, REQUEST_CODE);에 getActivity().startActivityForResult(intent, REQUEST_CODE);.
솔루션 2:
때startActivityForResult(intent, REQUEST_CODE);의 라합니다고이활라고 .onActivityResult(requestCode,resultcode,intent)호출되면 전화를 걸 수 있습니다.fragments onActivityResult()여기서, 를 지나갑니다.
당신의 파편 안에서, 전화하세요.
this.startActivityForResult(intent, REQUEST_CODE);
this @그렇지 않으면 @Clevester가 말한 대로 합니다.
Fragment fragment = this;
....
fragment.startActivityForResult(intent, REQUEST_CODE);
저도 전화를 해야 했습니다.
super.onActivityResult(requestCode, resultCode, data);
모부활동중에서.onActivityResult효과가 있을 거예요
(@Clevester의 답변에서 이 답변을 수정했습니다.)
Android의 Navigation 구성 요소의 경우, 중첩된 Fragment가 있을 때 이 문제는 해결할 수 없는 미스터리처럼 느껴질 수 있습니다.
이 게시물의 다음 답변에서 얻은 지식과 영감을 바탕으로 효과적인 간단한 솔루션을 구성할 수 있었습니다.
onActivityResult()당신은 당신이 사용하는 활성 프래그먼트 목록을 루프할 수 있습니다.FragmentManager의getFragments()방법.
이 작업을 수행하려면 다음을 사용해야 합니다.getSupportFragmentManager()또는 API 26 이상을 대상으로 합니다.
하는 것은 각 하는 목록을 입니다.instanceof.
하는 동안에FragmentComponent를 에 Android Navigation Component라는NavHostFragment.
그럼 이제 어떻게 하죠?프래그먼트를 그들에게 알려야 합니다NavHostFragment.NavHostFragment그 자체가 파편입니다.그래서 사용하기getChildFragmentManager().getFragments()우리는 다시 한 번 a를 얻습니다.List<Fragment>우리에게 알려진 파편의.NavHostFragment는 그 해서 확인합니다.instanceof각 조각.
일단 우리가 관심의 조각을 목록에서 찾으면, 우리는 그것을 그것이라고 부릅니다.onActivityResult() onActivityResult()라고 선언합니다.
// Your activity's onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
List<Fragment> lsActiveFragments = getSupportFragmentManager().getFragments();
for (Fragment fragmentActive : lsActiveFragments) {
if (fragmentActive instanceof NavHostFragment) {
List<Fragment> lsActiveSubFragments = fragmentActive.getChildFragmentManager().getFragments();
for (Fragment fragmentActiveSub : lsActiveSubFragments) {
if (fragmentActiveSub instanceof FragWeAreInterestedIn) {
fragmentActiveSub.onActivityResult(requestCode, resultCode, data);
}
}
}
}
}
이 대답들의 대부분은 계속해서 당신이 전화해야 한다고 말합니다.super.onActivityResult(...) 호트서에에서Activity당신을 위하여Fragment하지만 그것은 저에게 효과가 없는 것처럼 보였습니다.
에서.Activity당신은 당신에게 전화해야 합니다.Fragments onActivityResult(...).여기 예가 있습니다.
public class HostActivity extends Activity {
private MyFragment myFragment;
protected void onActivityResult(...) {
super.onActivityResult(...);
this.myFragment.onActivityResult(...);
}
}
당신의 어느 시점에서.HostActivity은 할해야합다를 해야 할 입니다.this.myFragment그자리의 Fragment사용 중입니다.또는 다음을 사용합니다.FragmentManager을 얻기 위해Fragment그것에 대한 언급을 당신의 안에 두는 대신에.HostActivity또한 다음 항목을 확인합니다.null전화하기 전에this.myFragment.onActivityResult(...);.
다른 답변에 아직 설명되지 않은 다른 사용 사례:
onActivityResult()된 fragment는 fragment를 할 때 .exception.startResolutionForResult():
if (exception is ResolvableApiException) {
exception.startResolutionForResult(activity!!, MY_REQUEST_CODE)
}
이 이경대체로 합니다.exception.startResolutionForResult()fragment 적으로편단▁.startIntentSenderForResult():
if (exception is ResolvableApiException) {
startIntentSenderForResult(exception.resolution.intentSender, MY_REQUEST_CODE, null, 0, 0, 0, null)
}
public class takeimage extends Fragment {
private Uri mImageCaptureUri;
private static final int PICK_FROM_CAMERA = 1;
private static final int PICK_FROM_FILE = 2;
private String mPath;
private ImageView mImageView;
Bitmap bitmap = null;
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.activity_send_image, container, false);
final String[] items = new String[] { "From Camera", "From SD Card" };
mImageView = (ImageView)view.findViewById(R.id.iv_pic);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_item, items);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Select Image");
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 0) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(), "tmp_avatar_"
+ String.valueOf(System.currentTimeMillis())
+ ".jpg");
mImageCaptureUri = Uri.fromFile(file);
try {
intent.putExtra(
android.provider.MediaStore.EXTRA_OUTPUT,
mImageCaptureUri);
intent.putExtra("return-data", true);
getActivity().startActivityForResult(intent,
PICK_FROM_CAMERA);
} catch (Exception e) {
e.printStackTrace();
}
dialog.cancel();
} else {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
getActivity().startActivityForResult(
Intent.createChooser(intent,
"Complete action using"), PICK_FROM_FILE);
}
}
});
final AlertDialog dialog = builder.create();
Button show = (Button) view.findViewById(R.id.btn_choose);
show.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Switch the tab content to display the list view.
dialog.show();
}
});
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK)
return;
if (requestCode == PICK_FROM_FILE) {
mImageCaptureUri = data.getData();
// mPath = getRealPathFromURI(mImageCaptureUri); //from Gallery
if (mPath == null)
mPath = mImageCaptureUri.getPath(); // from File Manager
if (mPath != null)
bitmap = BitmapFactory.decodeFile(mPath);
} else {
mPath = mImageCaptureUri.getPath();
bitmap = BitmapFactory.decodeFile(mPath);
}
mImageView.setImageBitmap(bitmap);
}
public String getRealPathFromURI(Uri contentUri) {
String [] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(contentUri, proj, null, null,null);
if (cursor == null) return null;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
}
기본 활동을 재정의할 수 있습니다.
onActivityResultbaseActivity.startActivityForResult.기본 활동에서 인터페이스를 추가하고 활동 결과를 재정의합니다.
private OnBaseActivityResult baseActivityResult; public static final int BASE_RESULT_RCODE = 111; public interface OnBaseActivityResult{ void onBaseActivityResult(int requestCode, int resultCode, Intent data); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(getBaseActivityResult() !=null && requestCode == BASE_RESULT_RCODE){ getBaseActivityResult().onBaseActivityResult(requestCode, resultCode, data); setBaseActivityResult(null); }Fragment는 단적인에대하를 합니다.
OnBaseActivityResult@Override public void onBaseActivityResult(int requestCode, int resultCode, Intent data) { Log.d("RQ","OnBaseActivityResult"); if (data != null) { Log.d("RQ","OnBaseActivityResult + Data"); Bundle arguments = data.getExtras(); } }
이 해결 방법으로 해결할 수 있습니다.
Facebook 로그인 시 위의 문제가 발생하면 다음과 같은 fragment의 부모 활동에 아래 코드를 사용할 수 있습니다.
Fragment fragment = getFragmentManager().findFragmentById(android.R.id.tabcontent);
fragment.onActivityResult(requestCode, resultCode, data);
또는:
Fragment fragment = getFragmentManager().findFragmentById("fragment id here");
fragment.onActivityResult(requestCode, resultCode, data);
그리고 당신의 단편에 아래의 호출을 추가합니다.
callbackManager.onActivityResult(requestCode, resultCode, data);
Kotlin 버전(활동 결과())
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
//add following lines in your activity
if(supportFragmentManager?.fragments!=null && supportFragmentManager?.fragments!!.size>0)
for (i in 0..supportFragmentManager?.fragments!!.size-1) {
val fragment= supportFragmentManager?.fragments!!.get(i)
fragment.onActivityResult(requestCode, resultCode, data)
}
}
추가할 내용
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
}
당신이 당신의 코드를 위의 코드로 대체할 때 자동으로 당신의 이것.
public void onActivityResult(int requestCode, int resultCode,
@Nullable Intent data){}
메서드가 작동을 시작합니다.
//No Need to write this code in onclick method
Intent intent=new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT)
startActivityForResult(intent,1);
Toast.makeText(getContext(), "image"+intent, Toast.LENGTH_SHORT).show();
@Mohit @ Mehta의 도움을 Mehta를 합니다.Navigation Component이것은 당신에게도 도움이 될 것입니다.제게 효과가 있었습니다.
onActivityResult의 MainActivity코드 아래에 붙여넣기:
for (Fragment fragment : navHostFragment.getChildFragmentManager().getFragments()){
if (fragment != null){
Log.d(TAG, "onResult Has Been Sent!");
fragment.onActivityResult(requestCode, resultCode, data);
}
}
그고리로.onActivityResult의 YOUR FRAGMENT당신은 결과를 얻을 수 있습니다.이것이 도움이 되길 바랍니다.
우선 활동에서 이 코드를 재정의해야 합니다.
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
그리고 나서, 당신의 단편에서
startActivityForResult(intent,GALLERY_REQUEST_CODE);
그리고 당신의 단편에서보다 더,
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result code is RESULT_OK only if the user selects an Image
if (resultCode == Activity.RESULT_OK) {
}
}
Olie C가 언급했듯이, 중첩된 조각을 사용할 때 onActivityResult에 반환된 값을 사용하는 지원 라이브러리에 대한 활성 버그가 있습니다.방금 쳤어요 :-(
requestCode != 0일 때 Fragment.onActivityResult가 호출되지 않음을 참조하십시오.
저는 여기에 있는 모든 답들이 해킹에 지나지 않는다는 강한 의심을 가지고 있습니다.저는 그것들을 모두 시도해보았지만, 항상 어리석은 문제가 있기 때문에 신뢰할 수 있는 결론은 얻지 못했습니다.나로서는 일관성 없는 결과에 의존할 수 없습니다.Fragments의 공식 Android API 문서를 보면 Google은 다음과 같이 명시되어 있습니다.
조각에 포함된 활동에서 결과에 대한 시작 활동(Intent, int)을 호출합니다.
참조: Android Fragment API
따라서 호스팅 활동에서 startActivityForResult()를 실제로 호출하고 여기서 ActivityResult()에 대한 결과를 처리하는 것이 가장 올바르고 신뢰할 수 있는 접근 방식인 것 같습니다.
코드에 중첩된 조각이 있습니다.super.on ActivityForResult 호출이 작동하지 않음
조각을 호출할 수 있는 모든 활동을 수정하거나 조각 체인의 모든 조각을 호출하는 작업을 수행할 수 없습니다.
다음은 작동하는 많은 솔루션 중 하나입니다.즉시 조각을 만들어 지원 조각 관리자와 함께 활동에 직접 연결합니다.그런 다음 새로 만든 조각에서 startActivityForResult를 호출합니다.
private void get_UserEmail() {
if (view == null) {
return;
}
((TextView) view.findViewById(R.id.tvApplicationUserName))
.setText("Searching device for user accounts...");
final FragmentManager fragManager = getActivity().getSupportFragmentManager();
Fragment f = new Fragment() {
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
startActivityForResult(AccountPicker.newChooseAccountIntent(null, null,
new String[]{"com.google"}, false, null, null, null, null), REQUEST_CODE_PICK_ACCOUNT);
}
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == REQUEST_CODE_PICK_ACCOUNT) {
String mEmail = "";
if (resultCode == Activity.RESULT_OK) {
if (data.hasExtra(AccountManager.KEY_ACCOUNT_NAME)) {
mEmail = data
.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
}
}
if (mActivity != null) {
GoPreferences.putString(mActivity, SettingApplication.USER_EMAIL, mEmail);
}
doUser();
}
super.onActivityResult(requestCode, resultCode, data);
fragManager.beginTransaction().remove(this).commit();
}
};
FragmentTransaction fragmentTransaction = fragManager
.beginTransaction();
fragmentTransaction.add(f, "xx" + REQUEST_CODE_PICK_ACCOUNT);
fragmentTransaction.commit();
}
언급URL : https://stackoverflow.com/questions/6147884/onactivityresult-is-not-being-called-in-fragment
'programing' 카테고리의 다른 글
| 종료 메시지 작성 방법 (0) | 2023.06.05 |
|---|---|
| 루비의 문자열 이름으로 클래스 인스턴스를 만들려면 어떻게 해야 합니까? (0) | 2023.06.05 |
| 날짜당 여러 개가 존재하는 경우 개최되는 레슨/이벤트 수를 보다 간결하게 계산하는 방법 (0) | 2023.06.05 |
| 행 이름을 첫 번째 열로 변환하려면 어떻게 해야 합니까? (0) | 2023.06.05 |
| 파이어베이스:프로덕션 APN 인증서를 업로드할 수 없습니다. (0) | 2023.06.05 |