从 MainActivity.Java 调用自定义视图中的方法
Call a method in the custom view from MainActivity.Java
我已经创建了一个自定义视图,并且它已添加到布局中。
<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"
/>
通过这样做,我不需要在 MainActivity class 中实例化我的 Draw class。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
但是这有局限性,因为我不能在绘图中调用方法 class。
public void buttonOnClick(View v)
{
switch (v.getId())
{
case R.id.button:
//call a method in the Draw class
break;
}
}
我已经尝试将我的 Draw(扩展视图)转换为静态 class,并将我想要访问的方法转换为 public 静态方法。但是 invalidate()
不喜欢这样。
我的下一次尝试是通过 GUI 生成器在自定义视图上创建一个按钮 class。看来您不能使按钮成为自定义视图对象的子对象。
我的问题:如何从主 class 访问 Draw class 中的方法?
要引用您的 Draw
class 在您的 MainActivity
中创建全局变量
Draw myDraw;
接下来,将其设置在您的 onCreate
myDraw = (Draw) findViewById(R.id.view);
最后,在你的 buttonOnClick
中调用它
case R.id.button:
myDraw.method();
break;
或 如果您只想引用 buttonOnClick
中的变量,您可以这样做
case R.id.button:
((Draw) findViewById(R.id.view)).method();
break;
您可以像这样实例化绘图 class
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();
我已经创建了一个自定义视图,并且它已添加到布局中。
<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"
/>
通过这样做,我不需要在 MainActivity class 中实例化我的 Draw class。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
但是这有局限性,因为我不能在绘图中调用方法 class。
public void buttonOnClick(View v)
{
switch (v.getId())
{
case R.id.button:
//call a method in the Draw class
break;
}
}
我已经尝试将我的 Draw(扩展视图)转换为静态 class,并将我想要访问的方法转换为 public 静态方法。但是 invalidate()
不喜欢这样。
我的下一次尝试是通过 GUI 生成器在自定义视图上创建一个按钮 class。看来您不能使按钮成为自定义视图对象的子对象。
我的问题:如何从主 class 访问 Draw class 中的方法?
要引用您的 Draw
class 在您的 MainActivity
Draw myDraw;
接下来,将其设置在您的 onCreate
myDraw = (Draw) findViewById(R.id.view);
最后,在你的 buttonOnClick
case R.id.button:
myDraw.method();
break;
或 如果您只想引用 buttonOnClick
中的变量,您可以这样做
case R.id.button:
((Draw) findViewById(R.id.view)).method();
break;
您可以像这样实例化绘图 class
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();