0

以下设置不起作用,有人知道原因吗(我似乎无法在片段中找到自定义表面视图的示例)。

我的 surfaceView 类目前只是空心的:

class MySurfaceView extends SurfaceView implements Runnable{

public MySurfaceView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

@Override
public void run() {
    // TODO Auto-generated method stub

}



}

我的片段 XML 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout2"
    android:layout_width="500dp"
    android:layout_height="600dp"
    android:layout_gravity="fill"
    android:background="#000000" >


    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />


    <com.example.android.fragments.MySurfaceView
        android:id="@+id/surfaceview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>


    </LinearLayout>

然后在我调用的 OnCreateView 上的实际 Fragment 本身中:

  return inflater.inflate(R.layout.article_view, container, false);

任何想法为什么这不挂在一起?

它与 XML 有关,因为当我这样做时

<SurfaceView
    android:id="@+id/surfaceview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

然后它工作正常。

4

2 回答 2

1

如果您只想在片段中显示您的自定义 SurfaceView ('MySurfaceView'),那么只需执行以下操作:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return new MySurfaceView(getActivity());
    }
于 2014-01-28T11:39:03.727 回答
0

如果您检查,答案很简单:

http://developer.android.com/guide/components/fragments.html#Creating

您将看到在 onCreateView 上您应该返回 View 将用于呈现 Fragment

@Override
    public View onCreateView( String name , Context context , AttributeSet attrs )
    {
        // TODO Auto-generated method stub
        return super.onCreateView( name , context , attrs );
    }

你应该返回 View 所以基本上你应该返回那里

MySurfaceView

//编辑

public MySurfaceView ( Context context , AttributeSet attrs , int defStyle )
    {
        super( context , attrs , defStyle );
        // TODO Auto-generated constructor stub
    }

    public MySurfaceView ( Context context , AttributeSet attrs )
    {
        super( context , attrs );
        // TODO Auto-generated constructor stub
    }

    public MySurfaceView ( Context context )
    {
        super( context );
    }

尝试实现此视图的所有 3 个构造函数

于 2013-02-15T14:39:04.997 回答