簡體   English   中英

Android找不到屬性錯誤的設置器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM