startActivityForResult () vs getActivity ().startActivityForResult () в фрагменте Android
какие различия между startActivityForResult()
vs getActivity().startActivityForResult()
в фрагменте Android? И каковы различия в поведении в onActivityForResult()
когда вызывается фрагмент?
6 ответов
startActivityForResult()
должен обрабатывать его из fragment
' s onActivityForResult()
getActivity().startActivityForResult()
должны справиться с этим с activity
' s onActivityForResult()
по сути:
если у вас fragment
и вы хотите обработать результат на fragment
используйте onActivityForResult()
, в противном случае, если вы хотите обработать его из activity
фрагмента, используйте getActivity.startActivityForResult()
startActivityForResult из фрагмента вызов startActivityForResult контейнера активности. Так для фрагмента: -
вызовите startActivityForResult (Intent, int) из содержащего фрагмент действия.
тогда, когда вы используете его в фрагмент прямо определенные изменения могут быть сделаны по запросу код.И вы получите измененный код запроса в onActivityresult (), потому что я столкнулся с некоторой проблемой с измененным запросом код недавно . Вы можете посмотреть в Этой Теме.
можно использовать startActivityForResult()
дома и getActivity().startActivityForResult()
внутри фрагмента.
Inshort, чтобы получить контекст деятельности, мы предшествуем ему с getActiviy()
.
вместо этого мы можем вызвать onActivityResult() конкретного фрагмента, как показано ниже из Actiivty.:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
for (Fragment fragment : getChildFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
если мы поставим его более подробно, то,
если вы позвоните startActivityForResult()
из вашего фрагмента код запроса будет изменен действием, которому принадлежит фрагмент.
Итак, если вы хотите получить правильный resultCode в вашей деятельности вы можете попробовать, как показано ниже :
НЕ ИСПОЛЬЗУЙТЕ: (в таком случае):
startActivityForResult(intent, 1);
использование :
getActivity().startActivityForResult(intent, 1);
надеюсь, что это помогает..!
никакой разницы... Но небольшая разница-getActivity ().startActivityForResult () может вызывать только из фрагмента:)
" startActivityForResult () " работает с классами активности. когда вы находитесь в классе Activity, вы можете напрямую использовать этот метод. когда вы находитесь во фрагменте, поскольку фрагмент создает активность, вы должны сначала получить активность, основанную на этом фрагменте. значит:
//in fragment class:
Activity activity = this.getActivity();
теперь у вас есть активность, и я сказал, что вы можете использовать "startActivityForResult()" для активности, которую вы получаете из фрагмента.
activity.startActivityForResult();
надеюсь поможет.
вы должны сделать звонок со ссылкой на Activity
С startActivityForResult(Intent intent, int requestCode)
метод указан в Activity
.
Итак, если вы звоните из YourActivity
, он уже имеет ссылку Activity
как:
YourActivity extends AppCompatActivity (which is subclass of `Activity`)
но если вы звоните из YourFragment
необходимо указать Activity
ссылка, которая в этом случае будет деятельностью, содержащей YourFragment
; поэтому мы используем getActivity()
и затем триггер startActivityForResult()