猿问

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

如何在片段中使用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
    }
});

问题是,当我的布局被膨胀时,接收按钮点击的仍然是托管活动,而不是单个的片段。有什么好办法

  • 注册片段以接收按钮单击?
  • 将单击事件从活动传递到它们所属的片段?


守着一只汪
浏览 737回答 3
3回答

一只斗牛犬

你可以这么做:活动: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     }}
随时随地看视频慕课网APP

相关分类

Android
我要回答