2016-02-28 49 views
0

我想使用片段,但我遇到了麻烦,当我想动态地添加或替换一个。当我这样做,我收到此错误信息:没有找到id的片段GameActivityFragment

java.lang.IllegalArgumentException: No view found for id 0x7f0c0074 (com.hang:id/fragment_game2_id) for fragment GameActivityFragment{254a4f5 #1 id=0x7f0c0074} 

这里的我在做什么:

  • 首先,我启动名为“GameActivity”包含片段视图使用的活动布局(fragment_game)只有一个按钮:

    ​​
  • 在 “GameActivity”,我打电话 “setOnClickListener” 改变片段。在 “点击”,这里是我的代码:

     Bundle b = new Bundle(); 
         b.putString("level", "01"); 
         GameActivityFragment fragment = new GameActivityFragment(); 
         fragment.setArguments(b); 
         FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
         ft.replace(R.id.fragment_game2_id, fragment) 
           .addToBackStack(null) 
           .commit();` 
    

Fragment_game2_id被识别的RelativeLayout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/fragment_game2_id" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.hang.activities.GameActivityFragment" 
tools:showIn="@layout/activity_game"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Game Activity fragment!!" /> 


</RelativeLayout> 

在扩展片段我的班 “GameActivityFragment”,我只覆盖OnCreateView:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_game, container, false); 
    } 

那是当我点击按钮,我有上面的错误。我不明白,因为我有这个id(fragment_game2_id)的视图。我也尝试将此代码放入GameActivityFragment的“OnCreateView”中,即使通过“GetFragmentManager”或“GetChildFragmentManager”替换OnCreateView中的“GetSupportFragmentManager”,也可以得到相同的结果。我也在这里寻找其他类似问题的答案,但我没有设法解决这个问题。

解释我想要做的事情:我的MainActivity显示一个片段,其中有几个按钮对应着我的游戏的不同级别。通过点击其中一个,我将启动一个名为GameActivity的新Activity,并带有一个片段。该片段首先显示所有子级,当用户点击其中一个时,我想更改片段以开始游戏。完成后,该片段将替换游戏布局,其中前一个布局显示所有子级别,以便用户可以点击下一个子级别。

编辑::我Fragment_game布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.hang.activities.GameActivityFragment" 
android:background="@color/colorAccent"> 

<Button 
    android:id="@+id/button_test" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Game Activity" /> 


</RelativeLayout> 

就是这样。 感谢您的帮助。

+0

'ft.replace(R.id.fragment,片段).addToBackStack(空).commit();' –

+0

谢谢,这似乎是现在的工作!只有一个小问题,按钮仍然出现在新视图的前面。是不是因为R.id.fragment不是好的替代品,而是另一个? – Seuseukeu

+0

很高兴知道:) –

回答

0
ft.replace(R.id.fragment, fragment).addToBackStack(null).commit(); 
相关问题