FragmentでUnfortunately, XXX has stoppedでクラッシュする
Android StudioのNew->Fragmentで追加したFragmentを使って表示しようとすると
"Unfortunately, XXX has stopped"
というポップアップが出てクラッシュするという問題が発生。 Logにも何も出ていない・・・
どこでクラッシュしてるのかさっぱりわからなかったので、仕方なく追加したFragmentにブレークポイントをはりまくって確認したところ、onAttachを最後にお亡くなりになっていた。
@Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnFragmentInteractionListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener"); } }
Fragmentを呼ぶActivity側をOnFragmentInteractionListener interfaceに対応させないとダメのようだ。
よって以下のようにActivityにimplements XXXFragment.OnFragmentInteractionListener を追加し、onFragmentInteractionをオーバーライドすればOK。
public class XXXActivity extends ActionBarActivity implements XXXFragment.OnFragmentInteractionListener { /// 省略 @Override public void onFragmentInteraction(Uri uri) { }
よく見たら作成されたFragmentに"Activities that contain this fragment must implement the XXXFragment.OnFragmentInteractionListener" て書いてありましたね・・、よく読めってことか
/** * A simple {@link Fragment} subclass. * Activities that contain this fragment must implement the * {@link XXXFragment.OnFragmentInteractionListener} interface * to handle interaction events. * Use the {@link XXXFragment#newInstance} factory method to * create an instance of this fragment. */ public class XXXFragment extends Fragment {
追記:
Fragmentを追加する際に、optionで"Include interface callbacks?"にデフォルトでチェックが入っているため、今回のようになったようでした。