gpt4 book ai didi

java - 从 MainActivity.Java 调用自定义 View 中的方法

转载 作者:行者123 更新时间:2023-12-01 16:55:06 25 4
gpt4 key购买 nike

我创建了一个自定义 View ,并将其添加到布局中。

    <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 类中实例化我的 Draw 类。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

但是这有局限性,因为我无法调用 Draw 类中的方法。

public void buttonOnClick(View v)
{
switch (v.getId())
{
case R.id.button:
//call a method in the Draw class
break;
}
}

我尝试将 Draw (扩展 View )转换为静态类,并将我想要访问的方法转换为公共(public)静态方法。但 invalidate() 不喜欢这样。

我的下一个尝试是通过 GUI 构建器在自定义 View 类上创建一个按钮。看来您无法将按钮设为自定义 View 对象的子对象。

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

最佳答案

要引用您的 Draw 类,请在 MainActivity 中创建全局变量

Draw myDraw; 

接下来,在 onCreate 中设置它

myDraw = (Draw) findViewById(R.id.view);

最后,在 buttonOnClick 中调用它

case R.id.button:
myDraw.method();
break;

OR如果您只想引用buttonOnClick中的变量,您可以这样做

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

关于java - 从 MainActivity.Java 调用自定义 View 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34211403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com