我创建了布局。我在那里添加了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
答案 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}}