Android无法找到属性错误

时间:2017-03-14 14:12:27

标签: android

我试图在数据绑定方法上处理可点击的TextView,但是我收到了这个错误:

Cannot find the setter for attribute 'android:clickable' with parameter type lambda on android.widget.TextView

我的TextView小部件必须是可点击的,并且我显示简单的Toast,如何将文字设置为android:text="@string/my_text,并且可以点击?

ActivityRegister:

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"/>

1 个答案:

答案 0 :(得分:-1)

我不知道你的代码。但是要创建一个可点击的文本,你只需要添加一个监听器,或者你可以在Xml中定义onClick属性并在Activity中定义该方法来处理click事件。

使用此:

android:onclick="doSomething"

活动

public void doSomething(View v){
//Write your code here
}