首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据绑定-找不到BR类

数据绑定-找不到BR类
EN

Stack Overflow用户
提问于 2020-05-14 20:02:49
回答 1查看 660关注 0票数 0

我正在使用android数据绑定,以这篇文章为指南。我知道它的目标不是androidx数据绑定,但我还没有在我的项目中使用androidx,而是在使用最新的android支持库。

不管怎样,我让我的ViewModel扩展了BaseObservable。正在生成BR类,并且显示正确。例如,我可以按住Ctrl键并单击BR.stateText,然后导航到[app]\build\generated\ap_generated_sources\debug\com.android.databinding.library.baseAdapters\BR中的genreated类。但是,当我去编译它的时候,IntelliJ似乎不知道这个类实际上是存在的。

代码语言:javascript
运行
复制
import android.databinding.BaseObservable;
import android.databinding.Bindable;
import com.android.databinding.library.baseAdapters.BR;

public class MyViewModel extends BaseObservable {

    public MyViewModel() {
        mStateText = "DEFAULT_TEXT_123";
    }

    @Bindable
    private String mStateText = null;

    public String getStateText() {
        return mStateText;
    }

    public void setStateText(String stateText) {
        mStateText = stateText;
        notifyPropertyChanged(BR.stateText);
    }
}

布局:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:bind="http://schemas.android.com/tools">

    <data>
        <variable
                name="viewModel"
                type="my.org.MyViewModel "/>
    </data>

...


        <Button
                android:layout_width="200dp" android:layout_height="wrap_content"
                android:layout_row="1" android:layout_column="1"
                android:id="@+id/system_state_btn"
                android:text="@{viewModel.stateText}"/>

片段:

代码语言:javascript
运行
复制
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        MainStatusBinding activityMainBinding = DataBindingUtil.setContentView(getActivity(), R.layout.main_status);
        activityMainBinding.setViewModel(new MyViewModel());
        activityMainBinding.executePendingBindings();

        View rootView = inflater.inflate(R.layout.main_status, container, false);
    ...
    ```
.

错误:找不到符号导入包^符号:类BR位置:包com.android.databinding.library.baseAdapters

代码语言:javascript
运行
复制
What is wrong with my setup that's causing IntelliJ to not recognize the class exists? Note, this fails for me when building on the commandline, so it's not specific to IntelliJ.

IntelliJ: 2020.1

Gradle wrapper: 6.3

android build tools: 28.0.3

android gradle plugin: 3.5.0

  [1]: https://www.journaldev.com/20292/android-mvvm-design-pattern
EN

Stack Overflow用户

发布于 2020-05-14 23:00:57

生成的BR类应该位于项目的根包中,您导入了错误的包。另外,@Bindable注释应该放在公共的getter中,而不是私有的支持字段中。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61796884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档