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 で Fragment を提示するために使用される View を返す必要があることがわかります

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

ビューを返す必要があるため、基本的にはそこに戻るだけです

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 に答える