[英]Android Cannot find the setter for attribute Error
我正在嘗試處理數據綁定方法上的可單擊TextView
,但出現此錯誤:
Cannot find the setter for attribute 'android:clickable' with parameter type lambda on android.widget.TextView
我的TextView
小部件必須是可單擊的,並且顯示簡單的Toast
,如何將文本設置為android:text="@string/my_text
並且可以單擊?
活動注冊:
public class ActivityRegister extends BaseActivities
implements ActivityRegisterContract.View{
private ActivityRegisterBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_register);
ActivityRegisterPresenter mainActivityPresenter = new ActivityRegisterPresenter(this);
ActivityRegisterData viewModel = new ActivityRegisterData();
viewModel.setReadContactPermission(Utils.getString(R.string.get_read_contact_permission, context));
binding.setPresenter(mainActivityPresenter);
}
@Override
public void getReadContactsPermission() {
Utils.toast("CLICKED", context);
}
}
主持人:
public class ActivityRegisterPresenter {
private ActivityRegisterContract.View view;
public ActivityRegisterPresenter(ActivityRegisterContract.View mView) {
view = mView;
}
public void getReadContactsPermission(){
view.getReadContactsPermission();
}
}
ActivityRegisterContract
public interface ActivityRegisterContract {
public interface View {
void getReadContactsPermission();
}
}
然后是ActivityRegisterData
public class ActivityRegisterData extends BaseObservable {
private String readContactPermission;
public ActivityRegisterData() {
}
@Bindable
public String getReadContactPermission() {
return readContactPermission;
}
public void setReadContactPermission(String readContactPermission) {
this.readContactPermission = readContactPermission;
notifyPropertyChanged(BR.readContactPermission);
}
}
我的布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:slidingLayer="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.example.Ui.Register.Model.ActivityRegisterData"/>
<variable
name="presenter"
type="com.example.Ui.Register.Presenter.ActivityRegisterPresenter"/>
</data>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#d1d1d1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/permission_for_read_contacts"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="@string/permission_for_read_contacts"
android:textColor="@color/white"/>
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/default_textview_height"
android:background="@drawable/selector_blue_buttons"
android:clickable="@{()->presenter.getReadContactsPermission()}"
android:text="@{viewModel.readContactPermission}"
android:textColor="@color/white"/>
</LinearLayout>
</LinearLayout>
</FrameLayout>
</layout>
問題是此行在布局上:
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/default_textview_height"
android:background="@drawable/selector_blue_buttons"
android:clickable="@{()->presenter.getReadContactsPermission()}"
android:text="@{viewModel.readContactPermission}"
android:textColor="@color/white"/>
我不知道您的代碼。但是要創建可點擊的文本,您只需向其添加偵聽器,或者可以在Xml中定義onClick屬性,並在Activity中定義該方法以處理點擊事件。
用這個:
android:onclick="doSomething"
並在活動中
public void doSomething(View v){
//Write your code here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.