Pre-Honeycomb(Android 3),每个Activity都已注册,可通过onClickLayout的XML中的标签处理按钮点击:
android:onClick="myClickMethod"
Run Code Online (Sandbox Code Playgroud)
在该方法中,您可以使用view.getId()和switch语句来执行按钮逻辑.
随着Honeycomb的推出,我将这些活动分解为碎片,可以在许多不同的活动中重复使用.按钮的大部分行为都是与Activity无关的,我希望代码驻留在Fragments文件中,而不使用OnClickListener为每个按钮注册的旧(pre 1.6)方法.
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我的布局被夸大时,它仍然是接收按钮点击的托管活动,而不是单个碎片.对两者都有好的方法
试图从片段中调用我的活动中的方法.我希望片段提供方法数据并在方法返回时获取数据.我希望实现类似于静态方法的调用,但不使用静态因为它在活动中产生问题.
碎片新手,所以我需要一个简单的教学解释!
谢谢!
我现在正在将内容封装成一个片段,并遇到一个难以谷歌的问题.在我的片段里面是一些带有onClick属性的按钮,但它们在Activity上调用而不是来自android系统的片段 - 这使得封装有点笨拙.有没有办法让onClick的反射内容调用片段?我现在看到的唯一解决方案是不使用xml中的onClick并通过代码在片段内设置click-listeners.