2017-07-18 8 views
0

別のフラグメントからフラグメントを開くにはどうすればいいですか? 別のShowNotesフラグメントからEditNoteフラグメントを開こうとすると、このエラーが発生します。別のフラグメントからフラグメントを開くことができません - ID 0x7f0e0084のビューが見つかりません

No view found for id 0x7f0e0084 (com.example.lalala.notepad:id/container_frame_layout) for fragment EditNote{3005d06 #1 id=0x7f0e0084} 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1293) 
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) 
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) 
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013) 
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 

ShowNotes.javaは、私は別のフラグメントを開きたい、そこからの断片は

public class ShowNotes extends Fragment { 
private ListView lv; 
ArrayList<Note> arrayList; 
private View view; 
ArrayAdapter<String> adapter; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.activity_show_notes, container, false); 
    arrayList = new ArrayList<>(); 
    Note n = new Note("Example", "It's just an example"); 

    arrayList.add(n); 

    return view; 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    NoteAdapter adapter = new NoteAdapter(view.getContext(), arrayList); 
    lv = (ListView) getView().findViewById(R.id.notes_listview); 
    lv.setAdapter(adapter); 


    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      EditNote fragment2=new EditNote(); 
      FragmentManager fragmentManager=getActivity().getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.container_frame_layout,fragment2); 
      fragmentTransaction.addToBackStack(null); 
      fragmentTransaction.commit(); 
     } 
    }); 
}} 

EditNote.javaはそれだけでビューを膨張、今やほとんど空の断片です。

public class EditNote extends Fragment { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.activity_edit_note, container, false); 
    return view; 
}} 

activity_edit_note.xmlは、私はあなたがgetSupportFragmentManagerないgetFragmentManager()

これらの行

EditNote fragment2=new EditNote(); 
FragmentManager fragmentManager=getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.container_frame_layout,fragment2); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 

を変更してみてくださいを使用しているビュー

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<FrameLayout 
    android:id="@+id/container_frame_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</FrameLayout> 
</FrameLayout> 
+0

「別のフラグメントからフラグメントを開くことができません」。私はあなたが再びエラーメッセージを読むべきだと思います。 – Joshua

答えて

0

を膨らま先となるでframeLayoutが含まれています〜

EditNote fragment2=new EditNote(); 
    this.getFragmentManager().beginTransaction() 
    .replace(R.id.container_frame_layout, fragment2,TAG_FRAGMENT) 
    .addToBackStack(null) 
    .commit(); 
0

フラグメンテーショントランザクションで使用する前にviewPagerを起動する必要があります。

ViewPagerページャ=(ViewPager)findViewById(R.id.container_frame_layout、fragment2);

関連する問題