SurfaceView和错误膨胀类

Jim*_*imC 4 android surfaceview

我试图用自定义视图创建一个应用程序,并且我不断收到"错误膨胀类".一定是我在自定义视图方面缺少一些基础知识,但我不确定是什么.这是一个非常简单的自定义视图程序,还需要什么来使其工作?

(注意:为了这个问题,我将SurfaceView类放在Activity类中.这不是大型应用程序中的情况.我没有在这里显示AndroidManifest.xml文件,但它只是由日食中的巫师.)

这是java:

package com.mypackage;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceView;

public class SimpleCustomViewActivity extends Activity {

class TheView extends SurfaceView{

    private static final String TAG = "TheView";

    public TheView(Context context, AttributeSet attrs) {
        super(context, attrs);
        Log.i(TAG,"TheView(" + context + "," + attrs + ")");
    }

}

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.simple_layout);
        TheView v = (TheView) findViewById(R.id.myview);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是文件res/layout/simple_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <com.mypackage.SimpleCustomView.TheView
    android:id="@+id/myview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
        />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Car*_*les 6

当你从xml文件中调用自己的surfaceView类时,你需要添加以下公共surfaceView创建方法:

public GameView(Context context) {
    super(context);
    init(context);
}

public GameView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public GameView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}
Run Code Online (Sandbox Code Playgroud)

如果你正在使用函数setContentView(gv),你只需要第一个.