Android,在XMLcheckbox侦听器?

这是可能的,做这样的事情

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/addContactButton" android:text="@string/addContactButtonLabel" android:onClick="launchContactAdder"/><!-- here --> </LinearLayout> 

Java的:

 public void launchContactAdder(View v) { Intent i = new Intent(this, ContactAdder.class); startActivity(i); } 

但是有一个要求,那就是方法必须是公开的,无效的,最重要的是把View作为一个参数。

现在我想要做同样的事情,但用checkboxbutton。 checkbox有android:onclick属性,但在Android教程中(http://developer.android.com/resources/samples/ContactManager/index.html)我可以看到这个代码

 showInvisibleControl.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Log.d(TAG, "mShowInvisibleControl changed: " + isChecked); showInvisible = isChecked; populateContactList(); } }); 

所以有一个onCheckedChanged(CompoundButton buttonView,boolean isChecked)方法。 有没有办法通过XML来做到这一点? 没有android:onCheckedChange属性,只有android:onClick属性,但正如我上面写的那样,该属性的名称必须具有相应的方法名称,它将View作为参数,但是从上面的代码我明白,我必须有一个方法CompoundButton和布尔参数。

任何方式以“XML方式”做到这一点?

Solutions Collecting From Web of "Android,在XMLcheckbox侦听器?"

我发现了Spinner Widget的onItemSelected事件的类似问题。 显然,Android团队认为这足以让我们的XML onClick事件:S。

官方文档: https : //developer.android.com/guide/topics/ui/controls/checkbox.html

 <CheckBox android:id="@+id/checkbox_meat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/meat" android:onClick="onCheckboxClicked"/> <CheckBox android:id="@+id/checkbox_cheese" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cheese" android:onClick="onCheckboxClicked"/> 

现在可以使用数据绑定库来做到这一点。 首先你需要创build一个处理程序类(在这个例子中,我称之为MainActivityHandlers)。 在这个处理程序类中,使用相应的实现定义一个方法(例如名称为method1)然后在布局文件中,只需要实现:

  ... <data> <variable name="handler" type="com.test.android.testapp.MainActivityHandlers" /> </data> ... <RadioGroup ... android:onCheckedChanged="@{handler.method1}" ... > 

你很好走。 更多信息: https : //developer.android.com/topic/libraries/data-binding/index.html