在 Honeycomb 之前 (Android 3),每个 Activity 均注册为通过以下方式处理按钮点击:onClick
布局 XML 中的标记:
android:onClick="myClickMethod"
在该方法中您可以使用view.getId()
和一个 switch 语句来执行按钮逻辑。
随着 Honeycomb 的引入,我将这些活动分解为片段,这些片段可以在许多不同的活动中重复使用。按钮的大部分行为与活动无关,我希望代码驻留在片段文件中without使用旧的(1.6 之前)的注册方法OnClickListener
对于每个按钮。
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
问题是,当我的布局膨胀时,接收按钮点击的仍然是托管活动,而不是单个片段。有没有好的方法
- 注册片段以接收按钮点击?
- 将点击事件从Activity传递到它们所属的fragment?
我更喜欢使用以下解决方案来处理 onClick 事件。这也适用于活动和片段。
public class StartFragment extends Fragment implements OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_start, container, false);
Button b = (Button) v.findViewById(R.id.StartButton);
b.setOnClickListener(this);
return v;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartButton:
...
break;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)