2017-07-18 50 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);

相关问题