Я пытаюсь реализовать диалог с выбором. Каждый выбор начнет свою деятельность с использованием startActivityForResult
, а DialogFragment
будет обрабатывать ответ с использованием onActivityResult
.startActivityForResult изнутри DialogInterface.OnClickListener
Пока что у меня есть что-то вроде этого:
class ChoiceFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setItems(sources, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
Intent intent = new Intent(SomeActivity.class);
startActivityForResult(intent, 0);
}
dialog.dismiss();
}
});
return builder.create();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// This never gets called
}
}
И в моей деятельности, я начинаю фрагмент так:
ChoiceFragment frag = new ChoiceFragment();
frag.show(getFragmentManager(), "choices");
Как видно из комментария, onActivityResult
не вызывается.
Я видел этот сценарий, упомянутый в нескольких вопросах, но все они, похоже, полагают, что основной актив также вызывал onActivityResult
или что этот фрагмент был вызван getActivity().startActivityForResult()
, ни один из которых не является истинным в моем случае.
Я думаю, что вы забыли о verride 'onActivityResult' в хостинговой деятельности. –
Но мой хостинг не вызывает 'onActivityResult' вообще ... – blockhead
с' super.onActivityResult (...) '? –