Android 在片段上实现onClick:在片段或活动上设置on-click侦听器
我正在使用Android,似乎有两种方法可以实现用户点击的监听器 选项1: 当触发器是片段的XML格式并且它设置了onClick属性时。 例如,这里是片段视图的一部分Android 在片段上实现onClick:在片段或活动上设置on-click侦听器,android,android-fragments,Android,Android Fragments,我正在使用Android,似乎有两种方法可以实现用户点击的监听器 选项1: 当触发器是片段的XML格式并且它设置了onClick属性时。 例如,这里是片段视图的一部分 <Button android:id="@+id/userClickButton" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onClick="myOnClickListen
<Button
android:id="@+id/userClickButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="myOnClickListener"
android:text="Click on Me"
/>
优点:
- 所有片段的唯一OnClickListener
- 所有变量都可以集中在活动中
- 当有许多与同一活动相关的片段时,可能会出现一些混淆
- 单击的侦听器必须是公共的
<Button
android:id="@+id/userClickButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Click on Me"
/>
优点:
- 每个片段都有自己的代码
- 每个片段必须有自己的onClickListener
- 片段之间的通信必须要求活动实现接口
您的
OnClickListener
应该位于视图所在的片段中。碎片基本上应该是自治的单位。该活动的作用只是促进片段之间的通信
例如,如果您后来决定您的片段需要托管在另一个活动中,那么您将需要重新实现之前活动中的所有代码。然而,如果将片段视为自治的,则可以轻松地将其托管在任意多个活动中
我认为对您来说,重要的设计问题是,为什么您的活动甚至需要了解正在单击的片段中的按钮。这通常是不必要的
<Button
android:id="@+id/userClickButton"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Click on Me"
/>
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_view, null);
Button userClickButton = (Button)root.findViewById(R.id.userClickButton);
userClickButton.setOnClickListener(new View.onClickListener() {
@Override
public void onClick(View view) {
// Something to do
}
});
}