我创建了布局。我在那里添加了视图:
<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;
}
}