Fragmentactivity与自定义表面视图



我正在编写一款android游戏,因此我使用了一个类来扩展surfaceview。

我的活动看起来像这样:

public class GameActivity extends FragmentActivity {
private Fragment fragEnd;
private GameView gameView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    gameView = new GameView(this);
    setContentView(gameView);

    fragEnd = (FragmentEnd) Fragment.instantiate(this, FragmentEnd.class.getName(), null);
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.add( WHAR COMES IN HERE??? , fragEnd);
    ft.commit();
}
...
GameView类扩展了surfaceview。我的activity_game.xml布局文件如下所示:
<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"
    tools:context=".GameActivity" 
    android:id="@+id/myView">
</RelativeLayout>

所以在我的xml中没有什么特别的定义。现在我想在游戏中使用碎片的选项等。我阅读了一些教程,并将组件添加到我的(Fragment)Activity中。但我收到一个IllegalArgumentException:"没有找到视图",而试图创建片段。我知道问题是,当前视图(Surfaceview)找不到。在教程中,他们只使用布局xml,如:

setContentView(R.layout.activity_main);
然后获取activity_main的组件(例如Relativelayout id "relativeLayoutView")来定义
ft.add( R.id.relativeLayoutView , fragEnd);

但在我的情况下,没有在我的activity_main,因为所有发生在gameview类。我如何解决这个显示碎片?

创建一个像这样的布局,并设置为活动…同时在GameView中添加一个接口,并在activity中实现这个接口。当你在片段中显示一些东西时,从GameView调用interface方法,并使用R.id.container或其他方法将片段添加到活动中。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.examples.workapp.app.GameView
    android:id="@+id/gameView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"/>
<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="200dp">
    </FrameLayout>
 </LinearLayout>

相关内容

  • 没有找到相关文章

最新更新