首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从MainActivity.Java调用自定义视图中的方法

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

Stack Overflow用户
提问于 2015-12-10 20:45:56
回答 2查看 3.2K关注 0票数 0

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

代码语言:javascript
代码运行次数:0
运行
复制
    <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类中实例化我的绘制类。

代码语言:javascript
代码运行次数:0
运行
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

但是,这是有限制的,因为我不能调用一个方法的抽签类。

代码语言:javascript
代码运行次数:0
运行
复制
public void buttonOnClick(View v)
{
    switch (v.getId())
    {
        case R.id.button:
            //call a method in the Draw class 
            break;
    }
}

我已经尝试将我的绘图(扩展视图)转到一个静态类,并将我想要访问的方法转到一个公共静态方法中。但是invalidate()不喜欢这样。

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

我的问题是:如何从主类访问绘图类中的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-10 20:51:34

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

代码语言:javascript
代码运行次数:0
运行
复制
Draw myDraw; 

接下来,在您的onCreate中设置它

代码语言:javascript
代码运行次数:0
运行
复制
myDraw = (Draw) findViewById(R.id.view);

最后,在您的buttonOnClick中调用它

代码语言:javascript
代码运行次数:0
运行
复制
case R.id.button:
    myDraw.method();
    break;

如果您只想引用buttonOnClick中的变量,只需执行以下操作

代码语言:javascript
代码运行次数:0
运行
复制
case R.id.button:
    ((Draw) findViewById(R.id.view)).method();
    break;
票数 4
EN

Stack Overflow用户

发布于 2015-12-10 20:51:34

您可以像这样实例化绘图类

代码语言:javascript
代码运行次数:0
运行
复制
Draw mDraw = (Draw) findViewById(R.id.view);
mDraw.myMethod();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34211403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档