我找到了更好的解決方案。 getCurrentFragment()
無法正確實施,我可以告訴。
我的代碼先前啓動了一個對話框,然後回調到由onAttach對話框存儲的Activity。該活動然後需要找到正確的片段,這是有問題的。
正確的解決辦法是,先呼叫setTargetFragment()的新的對話框片段:
SelectProblemDialogFragment f = SelectProblemDialogFragment.newInstance(args);
f.setTargetFragment(this, 0);
f.show(getFragmentManager(), "select_problem_dialog_fragment");
,然後在onAttach(),簡單地使用,作爲監聽器。
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
try
{
mListener = (SelectProblemDialogListener) getTargetFragment();
if (mListener == null)
{
mListener = (SelectProblemDialogListener) activity;
}
} catch (ClassCastException e)
{
throw new ClassCastException("Must implement SelectProblemDialogListener");
}
}