如何将数据从活动类转发到视图



我创建了布局。我在那里添加了视图:

<app.test.application.EObrazView
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

现在,例如用户正在单击按钮。在活动中正在执行正确的功能setOnClickListener。我想将有关它的信息发送到 查看类 app.test.application.EObrazView

怎么做?如何在该类之间共享信息?

编辑:

EObrazView view1;
view1 = (EObrazView) findViewById(R.id.myView);
[button on click listener]
view1.newImage(wo);

newImage(); 是 EObrazView 中的函数,当按下活动类中的按钮时,我想使用它。不幸的是,有一个错误:java.lang.NullPoniterException

假设视图来自您,情况似乎确实如此。您必须在视图类中创建方法。

然后,以 XML 格式为视图分配一个 ID:

android:id="@+id/myId"

您可以在活动中获得对此视图的引用

EObrazView view = (EObrazView)findViewById(R.id.myId);

并且可以调用方法。

将布局代码更改为以下内容:

<app.test.application.EObrazView
    android:id="@+id/myView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

然后,在Activity OnCreate内调用setContentView后,可以通过调用findViewById(R.id.myView).setOnClickListener()来获取对该视图的引用

如果您使用的是 OnClickListener ,则在调用onClick时,将向您提供对单击的视图的引用,然后您可以调用您喜欢的任何(公共)函数。

如果我在一个活动中有多个可点击的视图,我喜欢让我的活动实现OnClickListener,然后在 OnCreate 中为每个可点击的视图调用findViewById(R.id.someViewId).setOnClickListener(this),然后我使用如下所示的 switch 语句:

@Override
public void onClick(View someView) {
    switch (someView.getId()){
         case someViewId:
             //doing something such as call someView.someFunction()
             break;
         case someOtherViewId:
             //do something else!
             break;
    }
}

最新更新