2017-07-18 35 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包含的FrameLayout到我要膨脹的觀點

<?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

您使用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(); 

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

你必須在分段事務中使用它之前啓動viewPager。

ViewPager pager =(ViewPager)findViewById(R.id.container_frame_layout,fragment2);

相關問題