1

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

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

现在,例如用户正在单击按钮。在 Activity 中正在执行适当的功能setOnClickListener。我想将有关它的信息发送到 View class app.test.application.EObrazView

这个怎么做?如何在这些类之间共享信息?

编辑:

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

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

4

2 回答 2

2

假设视图来自您,似乎是这样。您必须在视图类中创建方法。

然后在 XML 中为视图分配一个 id:

android:id="@+id/myId"

你在活动中获得了对这个视图的引用

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

并且可以调用方法。

于 2012-11-30T20:40:42.140 回答
2

将您的布​​局代码更改为:

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

然后在你调用之后setContentViewOnCreateActivity可以通过调用来获得对该视图的引用findViewById(R.id.myView).setOnClickListener()

如果您使用OnClickListener, whenonClick被调用,您将获得对被单击视图的引用,然后您可以调用您喜欢的任何(公共)函数。

如果我在 Activity 中有多个可点击视图,我希望实现我的 Activity OnClickListener ,然后findViewById(R.id.someViewId).setOnClickListener(this)在 OnCreate 中为每个可点击视图调用,然后我使用如下 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;
    }
}
于 2012-11-30T20:47:28.113 回答