Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
内部类中的画布,android_Android_Canvas_Inner Classes - Fatal编程技术网

内部类中的画布,android

内部类中的画布,android,android,canvas,inner-classes,Android,Canvas,Inner Classes,是否可以将活动类中扩展SurfaceView的类作为内部类?大概是这样的: <?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="fi

是否可以将活动类中扩展SurfaceView的类作为内部类?大概是这样的:

<?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.android.iiProject.Presentation.DrawCanvas
android:id="@+id/SurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
<view
  class="com.yourpackage.YourOuterClass$YourInnerClass" 
  ...
  />
其中,表示是活动类,DrawCanvas是扩展SurfaceView的类,并且从表示活动中调用DrawCanvas对象

我希望这样做,因为我希望能够访问表示活动中可用的方法和变量,我不希望将它们声明为静态以从其他类访问它们,因为这会给我带来很多其他问题。。。! 这样,它在XML文件中为我提供了classNotFoundException


提前非常感谢

是的,这是可能的,您只需以与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.android.iiProject.Presentation.DrawCanvas
android:id="@+id/SurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
<view
  class="com.yourpackage.YourOuterClass$YourInnerClass" 
  ...
  />
引述:

自定义组件在XML中创建为通用视图,而 类是使用完整包指定的。还要注意,内部 我们定义的类是使用NoteEditor$MyEditText引用的 表示法,这是Java中引用内部类的标准方法 编程语言。如果自定义视图组件未定义为 一个内部类,然后您也可以声明该视图 组件,并排除class属性


见,第4点

是的,这是可能的,您只需以与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.android.iiProject.Presentation.DrawCanvas
android:id="@+id/SurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
<view
  class="com.yourpackage.YourOuterClass$YourInnerClass" 
  ...
  />
引述:

自定义组件在XML中创建为通用视图,而 类是使用完整包指定的。还要注意,内部 我们定义的类是使用NoteEditor$MyEditText引用的 表示法,这是Java中引用内部类的标准方法 编程语言。如果自定义视图组件未定义为 一个内部类,然后您也可以声明该视图 组件,并排除class属性


见,第4点

非常感谢您的回复,它成功了!但是现在我在引用DrawCanvas时得到了一个classCastException内部类,因为它在XML中声明为通用对象视图,不应该被转换为DrawCanvas?!有问题的句子:DrawCanvas mycanvas=DrawCanvas findViewByIdR.id.SurfaceView;非常感谢您的回复,它成功了!但是现在我在引用DrawCanvas时得到了一个classCastException内部类,因为它在XML中声明为通用对象视图,不应该被转换为DrawCanvas?!有问题的句子:DrawCanvas mycanvas=DrawCanvas findViewByIdR.id.SurfaceView;