2017-12-14 5 views
7

startActivityForResult()getActivity().startActivityForResult()의 차이점은 무엇인가요? Fragment에서 호출 할 때 onActivityForResult()의 동작 차이는 무엇입니까?startActivityForResult()와 getActivity(). 안드로이드 프래그먼트의 startActivityForResult()

+0

https://developer.android.com/reference/android/app/Activity.html#onActivityResult(int, int, android.content.Intent) 및 https://developer.android.com/training/basics/ intents/result.html –

+0

Android 개발 관련 문서가 있다는 것을 알고 계십니까? –

답변

2

startActivityForResult()가에서 처리해야 fragmentonActivityForResult()

getActivity().startActivityForResult()에서 처리해야 activity의 기본적 onActivityForResult()

:

당신이 fragment에있는 경우 및 fragment에서 결과를 처리하려면 onActivityForResult()을 사용해야합니다. 당신이 조각의 activity에서 처리 할 경우 약간의 차이가 getActivity()이다 getActivity.startActivityForResult()

모든
1

활동 내에 startActivityForResult()을 사용하고 조각 내에 getActivity().startActivityForResult()을 사용할 수 있습니다.

즉석 활동의 컨텍스트를 얻기 위해 우리는 getActiviy()으로 시작합니다. 우리가 다음 자세한 내용에 넣으면 당신은 당신의 조각에서 startActivityForResult()를 호출 할 경우

대신에, 우리는, Actiivty :

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    for (Fragment fragment : getChildFragmentManager().getFragments()) { 
     fragment.onActivityResult(requestCode, resultCode, data); 
    } 
} 

에서 아래)

를 특정 조각의 onActivityResult를을 (호출 할 수 있습니다 requestCode는 Fragment를 소유 한 활동에 의해 변경됩니다. 당신이 당신의 활동에 올바른의 resultCode를 얻고 싶다면

그래서, 당신은 다음과 같이 시도 할 수 있습니다 :

는 사용하지 마십시오 : (이 경우에) :

startActivityForResult(intent, 1); 

사용 :

getActivity().startActivityForResult(intent, 1); 

희망이 .. ..!

+0

실제로'getActivity()'를 사용하지 않고 프래그먼트에서'startActivityForResult()'를 사용했습니다. 그래서 행동상의 차이점을 묻습니다. –

+1

@j.elmer를 참조하십시오. 하지만 약간의 차이점은 Activity의 Context를 얻기 위해 fragment에서만 getActivity(). startActivityForResult()를 사용할 수 있다는 것입니다. –

+0

Fragment에있는 별도의 startActivityForResult 메소드의 요점은 Activity의 onActivityResult에있는 모든 Fragment를 거치지 않아도된다는 것입니다. 그것은 정확히 잘못된 행동입니다. – ianhanniballake

0

차이 ... 하지만를 사용 rwise.에 startActivityForResult()는 조각에서 호출 할 수있는 :)

2

startActivityForResult 조각 모음에서 startActivityForResult 해당 컨테이너 활동. 조각 용 : -

조각을 포함하는 활동에서 startActivityForResult (Intent, int)를 호출하십시오. 직접 몇 가지 특정 변경 요청에 따라 만들 수 있습니다 조각에서 사용할 때 반면

내가 최근에 수정 요청 코드 몇 가지 문제에 직면 한 원인은, onActivityResult를()에 요청 코드를 수정 얻을 것이다 않는 암호. This Thread을 살펴볼 수 있습니다.

0

Activity으로 지정되어있는 방법은 이므로 Activity으로 전화해야합니다. 당신이 YourActivity에서 호출하면

그래서, 이미 같은 Activity의 기준이 있습니다

YourActivity extends AppCompatActivity (which is subclass of `Activity`) 

을하지만 YourFragment에서 호출하는 경우이 경우에는 될 것이다, Activity 참조를 지정해야 YourFragment을 포함한 활동; 따라서 우리는 getActivity()을 사용한 다음 트리거를 사용합니다. startActivityForResult()

0

"startActivityForResult()"는 활동 클래스에서 작동합니다. Activity 클래스에있을 때이 메서드를 직접 사용할 수 있습니다. 프래그먼트가있을 때, 프래그먼트가 액티비티에서 생성되기 때문에 먼저 프래그먼트를 기반으로 프래그먼트를 생성해야합니다. 의미 :

//in fragment class: 
Activity activity = this.getActivity(); 

는 이제 활동을하고 난 말했다, 당신은 당신이 조각에서 얻을 활동 "에 startActivityForResult()"를 사용할 수 있습니다.

activity.startActivityForResult(); 

희망이 도움이됩니다.

관련 문제