从MainActivity.Java调用自定义视图中的方法

从MainActivity.Java调用自定义视图中的方法,java,android,methods,view,graphics2d,Java,Android,Methods,View,Graphics2d,我已经创建了一个自定义视图,并将其添加到布局中 <com.example.moynul.myapplication.Draw android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/view" android:layout_above="@+id/button" android:layout_alignRight="@+

我已经创建了一个自定义视图,并将其添加到布局中

    <com.example.moynul.myapplication.Draw
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/view"
    android:layout_above="@+id/button"
    android:layout_alignRight="@+id/button2"
    android:layout_alignEnd="@+id/button2"
    android:layout_marginBottom="52dp"
    />
但是,这有局限性,因为我无法在Draw类中调用方法

public void buttonOnClick(View v)
{
    switch (v.getId())
    {
        case R.id.button:
            //call a method in the Draw class 
            break;
    }
}
我已经尝试将我的绘图(扩展视图)转换为静态类,并将我想要访问的方法转换为公共静态方法。但是
invalidate()
不喜欢这样

我的下一个尝试是通过GUI生成器在自定义视图类上创建一个按钮。似乎无法使按钮成为自定义视图对象的子对象


我的问题:如何从主类访问Draw类中的方法

main活动中引用
Draw
类创建全局变量

Draw myDraw; 
接下来,在您的
onCreate

myDraw = (Draw) findViewById(R.id.view);
最后,在您的
按钮中调用它

case R.id.button:
    myDraw.method();
    break;
如果您只想引用
按钮中的变量,单击
即可

case R.id.button:
    ((Draw) findViewById(R.id.view)).method();
    break;
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();

要引用
Draw
类,请在
main活动中创建全局变量

Draw myDraw; 
接下来,在您的
onCreate

myDraw = (Draw) findViewById(R.id.view);
最后,在您的
按钮中调用它

case R.id.button:
    myDraw.method();
    break;
如果您只想引用
按钮中的变量,单击
即可

case R.id.button:
    ((Draw) findViewById(R.id.view)).method();
    break;
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();

可以像这样实例化Draw类

case R.id.button:
    ((Draw) findViewById(R.id.view)).method();
    break;
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();

可以像这样实例化Draw类

case R.id.button:
    ((Draw) findViewById(R.id.view)).method();
    break;
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();

myObject=(Object)findViewById(R.id.objectDrawnOnGUI);||这样就可以引用设备屏幕上的任何内容了?所以如果我有一个滑块,那么slider slider=(slider)findviewbyd(R.id.mySlider)?代码运行良好。啊,我明白了。游戏引擎的工作原理非常简单,通过代码引用游戏对象。非常好的信息。myObject=(Object)findViewById(R.id.objectDrawnOnGUI);|这样就可以引用设备屏幕上的任何内容了?所以如果我有一个滑块,那么slider slider=(slider)findviewbyd(R.id.mySlider)?代码运行良好。啊,我明白了。游戏引擎的工作原理非常简单,通过代码引用游戏对象。非常好的信息。