【发布时间】:2018-09-08 10:33:58
【问题描述】:
在我的主要活动页面中,我有一个自定义视图以及一些其他视图,例如广播组。我想根据主活动页面中这些其他视图的状态来更改我的自定义视图方法的行为。例如,如果主活动页面中的单选组设置为“选项 1”,我想在自定义视图的 onTouchEvent 内绘制一个形状,如果单选组设置为“选项 2”,我想绘制另一个形状。
当我在onTouchEvent 中调用findViewId 时,我得到空值。我想在自定义视图中定义我的收音机组,但我希望有一个更优雅的解决方案,我不必这样做。我想使用单例,但我希望有一个更简单的解决方案。
** 编辑: 我发现对我来说最直观的解决方案如下:
在活动类和onCreate 方法中,我创建了一个侦听器,在该侦听器中我将调用自定义视图的setter 方法来传递来自无线电组的选定选项。更具体地说,在活动类和 onCreate 方法中,我有以下几行:
RadioGroup actionRadioGroup = (RadioGroup) findViewById(R.id.action);
actionRadioGroup.setOnCheckedChangeListener(new
RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
int currAction = radioGroup.getCheckedRadioButtonId();
MyView myView = (MyView) findViewById(R.id.myview);
myView.setAction(currAction);
}
});
在我的自定义视图中,我有这个方法:
public void setAction(int currAction) {
this.currAction = currAction;
/// other stuff
}
【问题讨论】:
标签: android android-custom-view custom-view