错误:找不到 ActivitySplashBinding

2024-01-10

我正在尝试检查用户是否登录。如果是,则显示特定视图组,否则显示不同的视图组。为了检查用户是否登录,我从共享首选项中获取用户(登录时用户保存在共享首选项中)。让我展示我的代码。

启动视图模型

public class SplashViewModel extends ViewModel {
    public final String TAG = "SplashViewModel";
    private final String GREETING = "Hi ";

    public ObservableBoolean isLoggedIn = new ObservableBoolean();
    public ObservableField<String> userName = new ObservableField<>("");
    private Preference<User> preference;

    SplashViewModel(Preference preference) {
        this.preference = preference;
        isLoggedIn.set(false);
    }

    public void getCurrentUser() {
        preference.get(Constants.CURRENT_USER, User.class)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(user -> {
                    isLoggedIn.set(true);
                    userName.set(GREETING + user.name);
                }, throwable -> isLoggedIn.set(false));
    }
}

活动启动画面

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.sevenbits.android.mvvmsample.view.SplashActivity">

    <data>
        <variable name="splashViewModel"
                  type="com.sevenbits.android.mvvmsample.viewmodel.SplashViewModel"/>

    </data>

    <android.support.constraint.ConstraintLayout
        android:id="@+id/parent1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/splash_bg">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/loggedin_layout"
            android:visibility="@{splashViewModel.isLoggedIn ? View.VISIBLE : View.GONE,default=gone}">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="32sp"
                android:text="@{splashViewModel.userName}"
                android:textColor="@color/white"
                android:gravity="center"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintVertical_bias="0.40"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="32sp"
                android:text="Welcome Back"
                android:textColor="@color/white"
                android:gravity="center"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintVertical_bias="0.50"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="24sp"
                android:text="Start a New Game >>"
                android:textColor="@color/white"
                android:gravity="center"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintVertical_bias="0.70"/>

        </android.support.constraint.ConstraintLayout>

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/loggedout_layout"
            android:visibility="@{splashViewModel.isLoggedIn ? View.GONE : View.VISIBLE}"
            >

            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_button"
                android:gravity="center"
                android:text="Login"
                android:textColor="@color/white"
                android:textSize="18sp"
                android:id="@+id/login_button"
                android:paddingStart="40dp"
                android:paddingEnd="40dp"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"
                app:layout_constraintBottom_toTopOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintVertical_bias="0.33"/>

            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_button"
                android:gravity="center"
                android:text="Sign Up"
                android:textColor="@color/white"
                android:textSize="18sp"
                android:id="@+id/sign_up_button"
                android:paddingStart="40dp"
                android:paddingEnd="40dp"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"
                app:layout_constraintBottom_toTopOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                />


            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_button"
                android:gravity="center"
                android:text="View Scores"
                android:textColor="@color/white"
                android:textSize="18sp"
                android:id="@+id/view_scores_button"
                android:paddingStart="40dp"
                android:paddingEnd="40dp"
                android:paddingTop="20dp"
                android:paddingBottom="20dp"
                app:layout_constraintVertical_bias="0.66"
                app:layout_constraintBottom_toTopOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent" />


            <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:textColor="@color/white"
                android:textAllCaps="false"
                android:textSize="18sp"
                android:id="@+id/guest_button"
                android:layout_marginBottom="20dp"
                android:text="Play As a Guest User"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"

                />

        </android.support.constraint.ConstraintLayout>

    </android.support.constraint.ConstraintLayout>
</layout>

飞溅活动

public class SplashActivity extends AppCompatActivity {

    SplashViewModel splashViewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initDataBinding();
        setButtonClickListeners();
    }

    @Override
    protected void onStart() {
        super.onStart();
        splashViewModel.getCurrentUser();
    }

    private void initDataBinding() {
        ActivitySplashBinding activitySplashBinding = DataBindingUtil.setContentView(this, R.layout.activity_splash);
        SplashViewModelFactory splashViewModelFactory = Injection.provideSplashViewModelFactory(this);
        splashViewModel = ViewModelProviders.of(this, splashViewModelFactory).get(SplashViewModel.class);
        activitySplashBinding.setSplashViewModel(splashViewModel);
//        splashViewModel.getCurrentUser();
    }

    private void setButtonClickListeners() {
        findViewById(R.id.guest_button).setOnClickListener(v -> {
            startActivity(new Intent(SplashActivity.this, GameActivity.class));
            finish();
        });

        findViewById(R.id.sign_up_button).setOnClickListener(v -> startActivity(
                new Intent(SplashActivity.this, RegisterActivity.class)));

        findViewById(R.id.login_button).setOnClickListener(v -> startActivity(
                new Intent(SplashActivity.this, LoginActivity.class)));

        findViewById(R.id.view_scores_button).setOnClickListener(v -> startActivity(
                new Intent(SplashActivity.this, ScoresActivity.class)));
    }
}

但是当我尝试运行时,它给出了以下错误。

错误:找不到符号类 ActivitySplashBinding

有人可以帮我吗?


如果您使用 gradle 插件 3.1.0 Canary 6 您需要添加android.databinding.enableV2=true在你的 gradle.properties 文件中

错误:找不到符号类 ActivitySplashBindingImpl

尝试添加

  <data>
    <import type="android.view.View" />

这在导入下的 LayoutDetails 部分中提到https://developer.android.com/topic/libraries/data-binding/index.html https://developer.android.com/topic/libraries/data-binding/index.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:找不到 ActivitySplashBinding 的相关文章

  • 将 Apple Touch ID 或 Samsung 指纹识别器与我的应用程序集成

    我目前正在开发一个 Android ios 移动应用程序 它有以下要求 请告诉我是否可以使用最新的智能手机 平板电脑上内置的指纹识别器来实现我的要求 我有一个在云上运行的人力资源管理系统 其中有员工详细信息 现在我正在开发一个用于员工考勤的
  • 排除jar中的文件进入apk

    我最近添加了一些新的罐子到我的android项目 一些 jar 包含 version properties 其中之一甚至包含 README TXT 我如何告诉 eclipse adt ant 排除文件进入 apk 显然我可以解压 apk 删
  • Android Studio 0.8.2 URI 有一个权限组件

    我收到 Gradle 项目同步失败 消息 当我启动 Android Studio 时 当我尝试清理项目时 我收到 无法完成 Gradle 执行原因 URI 具有权限组件 我已经尝试了几件事 但仍然陷入困境 我将配置文件从用户文件夹中移出 并
  • ViewPager - 无限滚动? [复制]

    这个问题在这里已经有答案了 我需要在屏幕上显示文本或图像 文本或图像 一个请求总共 10 个 是通过 HttpClient 从我的服务器获取的 当用户向右滑动并到达第 8 张幻灯片时 我需要从服务器获取下一组 10 个文本或图像 使用 Vi
  • Windows 7 64位android AVD启动错误:无法分配内存:8

    我刚刚更新到 Android SDK Tools r20 并尝试在 android 4 1 和 WXGA 上创建 avd 但是当我启动 AVD 时收到错误消息 配置 ini hw mainKeys no hw lcd density 320
  • 导入的项目抛出 java.lang.ClassNotFoundException

    所以我将一个现有的项目导入到 eclipse 中 但让它工作时遇到了很多麻烦 该项目与其他三个图书馆项目一起提供 谷歌播放服务库 捕获活动 肖像二维码 As soon as I imported the project I went und
  • 如何平移画布并仍然在正确的位置获取触摸事件

    我正在尝试创建一个自定义 AbsListView 覆盖 ListView GridView 和 HeaderGridView 上的相同内容 它将根据外部因素 在布局上移动的其他内容 重新定位其所有绘图和触摸事件 填充在这里不是一个选项 因为
  • 创建像 facebook android 一样的登录动画

    我想创建一个登录页面 如 facebook android 应用程序 其中包含用户名和密码EditText字段被隐藏 页面上会显示一个徽标 该徽标会在上方动画一定距离并停留在新位置 然后显示编辑字段 这是我尝试过的 但这里的徽标从页面底部开
  • 从图库加载图像时应用程序崩溃

    在我的应用程序中 我有两个按钮 一个用于从图库 从设备 加载图像 另一个用于通过访问设备的相机拍照 我的代码在某些设备上正常工作 bt在某些设备上 应用程序单击图库中的图像时崩溃 任何人都可以帮助我找出实际问题吗 public class
  • 自定义 listView 按随机顺序显示较少的项目

    我为我的 Android 应用程序制作了一个自定义的膨胀 listView 但 getView 方法有问题 public class BinderData extends BaseAdapter private LayoutInflater
  • adb 无法启动守护进程,CreateProcess 失败,错误 2

    我无法运行adb root或任何 adb 命令 我收到以下错误 我设置ADB TRACE 1 C WINDOWS system32 gt adb root system core adb adb c main Handling comman
  • 使用 KitKat 存储访问框架后打开 Google Drive 文件内容 URI

    我正在使用 android 4 4 的存储访问框架并打开文件选择器 一切正常 除了从 Google Drive 选择文件时 我只能弄清楚如何将其作为输入流打开 但我想获得一个 java File 对象 返回的内容 uri 如下所示 cont
  • 删除 android ListView 的底部分隔线

    我有固定的高度ListView 它在列表项之间有分隔线 但它还在最后一个列表项之后显示分隔线 有没有办法在最后一项之后不显示分隔线ListView 只需添加android footerDividersEnabled false 到您的 Li
  • Android 中带有传递参数的点击侦听器方法

    我是 Android 和 Java 新手 我想创建一个带有 int 参数的 onClick 方法 所以这是我的尝试 public void randomClick final int randomIndex private OnClickL
  • 当我想用它来进行单独的 apk 测试时,出现“android.support.test.espresso 不存在”

    我需要在没有源代码的情况下对 Android 应用程序进行一些自动测试工作 我发现 Robotium 和 espresso 都可以完成这项工作 我决定使用 espresso 因为它有 Google 支持 我想使用相同的签名对目标 apk 和
  • 具有 jsonObject 的 android 列表视图

    我正在开展一项活动 该活动请求服务器上的一个 php 文件 此 php 文件将返回给我一个JSONArray having JSONObjects作为它的元素 我明白了jArray并提取其内容 例如所有jsonObjects 每个 json
  • okHttp3 java.lang.NoSuchMethodError:没有虚拟方法 setCallWebSocket

    我已从 okhttp Retrofit 更新到 okhttp3 Retrofit2 但我的应用程序因此异常而无法启动 FATAL EXCEPTION EventThread Process appli speaky com PID 1470
  • MediaRecorder 纵向模式下的视频捕获

    我正在尝试制作自定义视频应用程序 Iwork 使用清单中的设置仅 2 2 API 8 一切顺利 但我不明白为什么纵向模式视频与横向模式视频没有区别 为了检测设备改变的方向 我在 surfaceChanged 中使用此代码 if mCamer
  • Firebase 令牌未生成

    我得到的令牌未生成 onTokenrefresh 没有调用 谁能帮忙 它已连接到 firebase 但令牌仍然没有生成 public class MyFireBaseInstanceId extends FirebaseInstanceId
  • SDK管理器不显示示例包选项

    我关注的是安卓安装示例的开发人员链接 http developer android com tools samples index html包裹 但是 当我展开Android平台的包列表时 没有 SDK示例 选项 复选框 可用 为什么 我已

随机推荐

  • 在活动中禁用电源按钮

    我正在开发一个应用程序 其中要求不允许用户使用电源按钮锁定屏幕或关闭Android设备 因此我必须禁用电源按钮并覆盖电源按钮功能 我已经搜索过互联网上也有很多 但找不到任何东西 我已经使用了这两段代码 但它仍然对我不起作用 Override
  • Ansible 检查字典是否存在

    我想部署额外的mysql用户 如果设置 所以我正在使用字典 例如 mysql additional users user1 password mysecretpass privs database1 ALL 只要定义了字典 它就可以正常工作
  • C# - 使用 RSA 加密和解密数据

    我在 C 中有以下代码 主班 X509Certificate2 cert new X509Certificate2 C test pfx hello X509KeyStorageFlags Exportable X509KeyStorage
  • ASP.Net 用户忘记密码问题的答案

    对于同时忘记密码和密码重置问题答案的用户 如何重置密码 我正在使用 ASP Net 会员资格 假设您的会员资格提供商 AspNetSqlMembershipProvider 位于网页配置 has requiresQuestionAndAns
  • 类型“Observable”上不存在属性“interval”

    我的 Angular2 组件类的构造函数中有以下代码 Observable from 1 2 3 interval 2000 subscribe e gt console log e 我导入了以下内容 import Observable f
  • 打印按行排序的 zip 中文件的注释,Python

    就是这样 我必须编写一个程序 该程序首先读取 zip 中的文件 在该文件中它将找到接下来要读取的 txt 文件的名称 依此类推 直到到达一个没有该名称的文件 接下来是一个 所以它只打印内容 我做到了并且工作得很好 但是 在它读取所有文件之后
  • 单机上的 MPI 并行程序执行

    我想在带有核心 i7 cpu 的单台电脑上运行并行代码我可以编译我的代码 但运行它时遇到问题 我使用 mpicxx 编译代码 当我通过 mpirun np 8 a out 运行它时 只有一个进程 我的操作系统是linux ubuntu 11
  • Spark 流异常:java.util.NoSuchElementException:None.get

    我在写信SparkStreaming通过将数据转换为数据帧来将数据传输到 HDFS Code object KafkaSparkHdfs val sparkConf new SparkConf setMaster local setAppN
  • 在 OS X 10.10 下,在 PyCharm 中使用 VirtualBox 设置 Vagrant 时出错

    当设置远程解释器并选择 Vagrant 时 我在 PyCharm 中收到以下错误 Can t Get Vagrant Settings 0 31mThe provider virtualbox that was requested to b
  • 如何更改chartjs中图例的颜色并能够添加一个图例?

    我想更改图例的颜色 因为我想要不同的颜色代表不同的情况 但现在图例仅使用我在条形图上设置的第一种颜色 我还想问一下 是否可以多设置一个图例 比如粉色代表A情况 蓝色代表B情况 Here is the link 代码在这里 https jsf
  • 如何从表中获取最后一个插入ID

    我想获取表中最后插入的 ID 的值 我怎样才能做到这一点 那么我使用的解决方案是 select id from NEW TABLE insert into val1 val2 values lorem ipsum 这会从数据库中插入的最后一
  • php 中的 exec 导致“脚本标头过早结束:php-cgi.exe”错误

    我编写了一个 php 脚本 它使用 exec 调用外部命令 该命令将空间数据库查询结果编译到形状文件中 在具有大量记录 例如 15 000 条 的表中 执行此命令可能需要长达 7 分钟的时间 该脚本在不需要太长时间 可能 脚本标题过早结束意
  • PySide QWebView 和下载不支持的内容

    下面是使用 PySide 演示 Web 应用程序等的最小浏览器的代码 它通常按照我想要的方式运行 尽管我似乎不太清楚如何成功下载不支持的内容 在 Finished 方法中 self reply readAll 返回一个空的 QByteArr
  • 使用 Selenium 和 jUnit 的第一步 - 有什么好的教程吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将过滤器关键字上的字符串传递给 Django 对象模型?

    如何在视图的关键字对象过滤器上传递变量 I have my object MyModel objects filter my keyword my filter values 我想从来自字符串的变量中获取 my keyword 如下所示 m
  • 在不同平台上使用 sqlite 和文件锁定是否存在已知问题?

    我使用 sqlite 来创建专有文件的索引 并且将使用多个线程 使用不同的 sqlite 句柄 访问数据库以进行读取和写入 我知道 sqlite 锁定文件是为了为读取器 写入器提供并发性 并且依赖于操作系统文件 api 进行锁定 这在 Wi
  • TS2307:在 TypeScript 上导入 Angular2 时找不到模块“angular2/core”

    大家好 我有一点 Angular 1 的背景 我正在学习 Angular 2 对于从 Angular 1 开始 唯一的依赖是添加角度源angular js or angular min js 当通过 script 标签尝试使用 Angula
  • 什么是概念?

    我听说过所有关于 C 0x 不再有概念的新消息 在 上 但我不知道它们是什么 有人可以向我解释一下吗 概念是一种通用编程功能 允许编写模板代码的人指定类型参数需要满足的要求 例如 某些集合类型需要集合的类型参数来定义 这有点过于简单化 但我
  • 原则 2 选择计数 groupBy

    我正在尝试检索许多具有唯一 uid 的行 qb gt select COUNT as cnt gt from type c gt groupBy c organization c process role c domain c year g
  • 错误:找不到 ActivitySplashBinding

    我正在尝试检查用户是否登录 如果是 则显示特定视图组 否则显示不同的视图组 为了检查用户是否登录 我从共享首选项中获取用户 登录时用户保存在共享首选项中 让我展示我的代码 启动视图模型 public class SplashViewMode