0

我想在用户点击ListView中的项目时在Android中显示新片段。这是我这样做代码:无法显示新的片段Android

@Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      final FragmentManager fm = getFragmentManager(); 
      final FragmentTransaction ft = fm.beginTransaction(); 
      DetailFragment df = new DetailFragment(); 

      Toast.makeText(getActivity().getBaseContext(), "Clicked with R.id.list=" + R.id.list, Toast.LENGTH_LONG).show();  

      ft.replace(R.layout.fragment_favorites, df, "DetailFragment").addToBackStack(null).setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit(); 
     } 

当我运行这段代码并点击列表视图中的项目,我得到异常:

10-09 22:39:05.336: E/AndroidRuntime(25157): java.lang.IllegalArgumentException: No view found for id 0x7f030029 (com.example.proj1:layout/fragment_favorites) for fragment DetailFragment{42430970 #3 id=0x7f030029 DetailFragment} 
+2

将R.layout.fragment_favorites替换为碎片容器的标识,ft.replace(R.id.frag_container) – 2014-10-10 03:05:51

+1

R.java可能已损坏。这可能是为什么无法找到视图ID。尝试清理构建您的项目(在Eclipse中,转到项目 - >清理),然后运行它。 – faizal 2014-10-10 03:15:26

+0

添加活动布局文件 – Sayem 2014-10-10 03:16:03

回答

0

ft.replace(INT containerViewId,片段片段,字符串标记) 替换已添加到容器的现有片段。 containerViewId是其碎片将被替换的容器的标识符。这不是布局。

检查你的活动布局的xml,找到片段

的ID替换

ft.replace(R.layout.fragment_favorites,DF, “DetailFragment”).addToBackStack(空).setTransition (FragmentTransaction.TRANSIT_FRAGMENT_FADE).commit(); 。

ft.replace( “您的片段ID”,DF, “DetailFragment”)提交();