我在一个xml布局文件中声明了许多按钮,并将此布局用于片段。但是很遗憾,“onClickButton”事件在宿主活动中被捕获,而不是在我的片段中。当然,在我的片段中,我可以手动解决此问题,如下所示:
是否有一种明确的方法在片段中处理onClickbutton事件?请注意保留HTML标记。
是否有一种明确的方法在片段中处理onClickbutton事件?请注意保留HTML标记。
Button buttonN = (Button) view.findViewById(R.id.buttonN);
buttonN.setOnClickListener(...);
Button buttonN = (Button) view.findViewById(R.id.buttonN);
buttonN.setOnClickListener(this);
不幸的是,仅使用Android SDK时,在代码中执行此操作是唯一的方法。
您尝试过自定义吗? AndroidAnnotations 或 RoboGuice 可以使其更简洁。
嗯,有趣。我从未尝试过这些代码。这只是一种理论。我在其他情况下经常使用此OnClickListener。
====================
如果按钮具有不同的ID,则可以使用相同的OnClickListener。这是容易的部分。
一个OnClickListener可以调用另一个OnClickListener。
像这样...
OnClickListener other;
OnClickListener demo = new OnClickListener() {
void onClick(View v) {
if(other != null)other.onClick(v);
}
}
因此,在您的Activity中设置一个ArrayList。当Fragment被创建并附加到Activity时,将您的OnClickListener放入其中。当Fragment销毁并分离时,删除您的OnClickListener。
ArrayList<OnClickListener> list = new ArrayList<>();
OnClickListener demo = new OnClickListener() {
void onClick(View v) {
for(OnClickListener demo : list) {
demo.onClick(v);
}
}
};
这个模块应该能够满足你的要求。也许需要修复一些代码。