你好,这是我第一次在xml中而不是在代码中使用onclick。这是布局图:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/reset"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/reset"
android:scaleType="fitCenter"
android:scaleX="-1"
android:onClick="reset"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/resetIcon" />
</androidx.constraintlayout.widget.ConstraintLayout>
在守则中:
public class SettingsActivity extends AppCompatActivity {
public void reset(View view) {
//Do things
}
}
正如标题所说, android:onClick
发出警告
在代码中使用click listener的数据绑定或显式连接
谷歌搜索这一声明不会有结果。
1条答案
按热度按时间avwztpqn1#
onclick有点泄气。您可以使用它,但它在代码中设置了一些难以遵循的魔力,并将特定布局隐式地绑定到活动。最好的方法是他们提到的两种方法——要么在代码中设置onclicklistener,要么在整个代码库中使用数据绑定技术。也没有办法在编译时检查它是否连接正确。onclick-in-xml没有被删除的唯一原因是数据绑定使用它,并且不会破坏旧的应用程序。
所以它可以工作,但您可能不应该使用它,除非使用数据绑定并在xml中指定行为。