如何将数据从Activity类转发到View?

时间:2012-11-30 20:37:51

标签: android view android-activity

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

<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);

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

2 个答案:

答案 0 :(得分:2)

假设视图来自你,这似乎就是这种情况。您必须在视图类中创建方法。

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

android:id="@+id/myId"

您可以使用

在活动中获得对此视图的引用
EObrazView view = (EObrazView)findViewById(R.id.myId);

可以调用方法。

答案 1 :(得分:2)

将布局代码更改为:

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

然后在setContentView OnCreate Activity内致电findViewById(R.id.myView).setOnClickListener()后,您可以致电OnClickListener

获取该视图的引用

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

如果我在Activity中有多个可点击的视图,我希望让我的Activity实现findViewById(R.id.someViewId).setOnClickListener(this)然后在OnCreate中为每个可点击的视图调用@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; } } ,然后我使用如下的switch语句:

{{1}}