为了账号安全,请及时绑定邮箱和手机立即绑定

如何在片段中使用xml onclick处理按钮单击

如何在片段中使用xml onclick处理按钮单击

守着一只汪 2019-06-18 10:28:40
如何在片段中使用xml onclick处理按钮单击前蜂窝(Android 3),每个活动都通过onClick布局的XML中的标记:android:onClick="myClickMethod"在该方法中,您可以使用view.getId()和一个开关语句来执行按钮逻辑。随着蜂巢的引入,我把这些活动分解成碎片,可以在许多不同的活动中重复使用。按钮的大部分行为与活动无关,我希望代码驻留在片段文件中。无使用旧的(预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     } });问题是,当我的布局被膨胀时,接收按钮点击的仍然是托管活动,而不是单个的片段。有什么好办法注册片段以接收按钮单击?将单击事件从活动传递到它们所属的片段?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你可以这么做:

活动:

Fragment someFragment;    //...onCreate etc instantiating your fragmentspublic void myClickMethod(View v) {
    someFragment.myClickMethod(v);}

碎片:

public void myClickMethod(View v) {
    switch(v.getId()) {
        // Just like you were doing
    }}

作为对@Ameen的回应,他希望少一些耦合,这样碎片就可以重用了。

接口:

public interface XmlClickable {
    void myClickMethod(View v);}

活动:

XmlClickable someFragment;    //...onCreate, etc. instantiating your fragments casting to your interface.
public void myClickMethod(View v) {
    someFragment.myClickMethod(v);}

碎片:

public class SomeFragment implements XmlClickable {//...onCreateView, etc.@Overridepublic void myClickMethod(View v) {
    switch(v.getId()){
        // Just like you were doing
    }}


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 736 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信