Java android surfaceview可以';行不通
这是一个简单的问题,但我想不出来: 这是我的xml: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 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)