首页 > 代码库 > 怎么在Fragment的布局文件中的组件onclik调用Fragment的方法?
怎么在Fragment的布局文件中的组件onclik调用Fragment的方法?
============问题描述============
xml文件:[color=#FF0000][/color]
<Button
android:id="@+id/btn_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:background="@drawable/btn_selector"
android:onClick="onButtonClickHandler"
android:padding="5dp"
android:text="@string/one" />
fragment类
public void onButtonClickHandler(View view) {
Button button = (Button) view;
if ("del".equals(button.getText())) {
String s = String.valueOf(mResultEt.getText());
if (s.length() > 0) {
if (s.length() == 1) {
clear("0");
} else {
mResultEt.setText(s.subSequence(0, s.length() - 1));
}
mOperatorNumber = mResultEt.getText().toString();
}
} else if ("+".equals(button.getText()) || "-".equals(button.getText())
|| "*".equals(button.getText()) || "÷".equals(button.getText())
|| "=".equals(button.getText())) {
caculate();// 计算
mOperator = button.getText().toString();// 操作符
mOldText = mResultEt.getText().toString();
mInputDone = true;
} else {
if (mInputDone) {
mResultEt.setText(button.getText().toString());
mInputDone = false;
} else {
mResultEt.append(button.getText().toString());
}
mOperatorNumber = mResultEt.getText().toString();
}
mResultEt.requestFocus(TextView.FOCUS_RIGHT);
}
Tabactivity类中调用fragment
tabActionBar.addTab(tabActionBar
.newTab()
.setText(R.string.calulator)
.setTabListener(
new MyTabListener<CalulatorFragment>(this,
CalulatorFragment.class)));
运行之后出现:
09-26 23:42:10.713: E/AndroidRuntime(12863): java.lang.IllegalStateException: Could not find a method onButtonClickHandler(View) in the activity class com.tcl.viewui.MainTabActivity for onClick handler on view class android.widget.Button with id ‘btn_1
============解决方案1============
为什么不自己在 Fragment 中手动设置监听呢
记得 View 的源码中,你在 onClick 中设置函数名之后,他是在传入的 context 对象的类中进行查找有无对应的函数,如果有就使用反射机制进行处理.这点是我们无法改变的.
而且你这样使用 onClick="xxxx" 的话,混淆之后可能会出错啊,而且android 的这一块是通过 Java 反射机制处理的,其速度相较于直接调用会慢一些的
怎么在Fragment的布局文件中的组件onclik调用Fragment的方法?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。