Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android surfaceview可以';行不通_Java_Android_Surfaceview - Fatal编程技术网

Java android surfaceview可以';行不通

Java android surfaceview可以';行不通,java,android,surfaceview,Java,Android,Surfaceview,这是一个简单的问题,但我想不出来: 这是我的xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <GG.My_pi

这是一个简单的问题,但我想不出来:

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>

<GG.My_pic.testA
        android:id = "@+id/myview"
        android:layout_width = "fill_parent"
        android:layout_height = "fill_parent"
    />

</FrameLayout>
但是我不能用我的手机

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}
如果我将R.layout.main更改为-->NewTesta(此),它将正常工作

(testA是扩展SurfaceView实现SurfaceHolder.Callback的类)


为什么???

我发现了原因,但我不知道为什么

作为java和android的真正初学者,我花了很长时间才发现这一点

这个问题的关键是

类gameView扩展了SurfaceView实现了SurfaceHolder.Callback {

}

您可以看到,这是surfaceview的基础,在每个教程中都有

比如

surfaceview中有3种构造函数:

SurfaceView(Context context)
SurfaceView(Context context, AttributeSet attrs)
SurfaceView(Context context, AttributeSet attrs, int defStyle)
我花了一天时间使用第一个:

SurfaceView(Context context)
而且总是“强制关闭”。 但当我转向第二个构造函数时:

SurfaceView(Context context, AttributeSet attrs)
它突然起作用了

这就是解决办法


谁能告诉我为什么??

啊哈!Android框架在从XML创建视图时使用2个参数构造视图,我猜AttributeSet包含定义它的XML节点中的所有属性。有关详细信息,请参阅。rq是对的,这是因为您用xml定义了布局,布局充气器将使用第二个或第三个变量来构造视图。构造函数的第一个变体有时也很有用,当您在编程代码中手动构造并添加到视图时,它会很有用。
SurfaceView(Context context)
SurfaceView(Context context, AttributeSet attrs)