0

別のフラグメントを呼び出すコンテキストメニューを持つフラグメントがあります。

switch (item.getItemId())
            {
 case MENU_EDIT:
                 FragmentTransaction ft =getActivity().getFragmentManager().beginTransaction();
                 PlayListDetailsView fragment=new PlayListDetailsView();
                 //fragment.getArguments().putLong("id", (Long)info.id);
                 ft.add(android.R.id.content, fragment);
                 ft.attach(fragment);
                 ft.commit();
}

新しいフラグメントは正常に開きますが、一度押すとアプリは完全に終了し、元のフラグメントに戻ります。また、バンドル情報を追加しようとしたコメント行は失敗し、「修正を提案してください」というフラグメントで取得できません:)

4

2 に答える 2

3

commit を呼び出す前にaddToBackstack()を呼び出す必要があります。

于 2013-02-27T07:13:54.347 に答える
2

まず第一に、フラグメントは直接ではなくアクティビティを通じて通信する必要があります: http://developer.android.com/training/basics/fragments/communicating.html

あなたの質問について:

  1. バックキーを正しく機能させるには、トランザクションをバックスタックに追加し、これをコミットの前に配置する必要があります。

    ft.addToBackStack("playlistdetails");
    
  2. 引数は次のように追加する必要があります。

    Bundle args = new Bundle();
    args.putLong("id", (Long)info.id);
    fragment.setArguments(args);
    
于 2013-02-27T07:19:30.300 に答える