Android 数据绑定(bind) Activity 结束()

标签 android android-activity mvvm data-binding android-databinding

我正在尝试使用 DataBinding 库在我的应用程序中实现 MVVM。对于我已经完成的简单任务,我可以找到出路,但问题是我无法在执行某些操作后完成 Activity 。

问题:

收到特定广播后,我必须关闭 ViewModel 类的 Activity 。由于 VM 类没有 View 的引用,我该如何完成 Activity ? 准确地说,我有启动画面和相应的 VM 类,它启动 IntentService 来下载数据。下载数据后,我必须完成初始屏幕并启动 MainActivity。我找到了从 VM 启动新 Activity 的方法,但是要完成前一个 Activity 还是个谜。

你能帮帮我吗? 谢谢!

最佳答案

使用 ObservableBoolean 创建一个 SplashStatus 模型:

private static class SplashStatus {
   public final ObservableBoolean isFinished = new ObservableBooelan();
}

这是您的 Splash 布局:

<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="status" type="com.example.SplashStatus"/>
   </data>
   <LinearLayout
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
       <TextView android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Splash Screen"
           android:onFinish="@{status.isFinished}"/>
   </LinearLayout>
</layout>

和绑定(bind)适配器方法:

@BindingAdapter("android:onFinish")
public static void finishSplash(View view, boolean isFinished) {

   if(isFinished){
       ((Activity)(view.getContext())).startActivity(new Intent(view.getContext(), MainActivity.class))
       ((Activity)(view.getContext())).finish();
   }
}

SplashActivity.java 中,在 onCreate 上初始化您的数据绑定(bind)。每当您分配 isFinished.set(true) onFinished 方法时,都会启动您的 MainActivity 并完成当前。

关于Android 数据绑定(bind) Activity 结束(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42365360/

相关文章:

android - GoogleAuthUtil.getToken() 已弃用 我如何获取 accessToken

java - 从其他 Activity 中打开 Activity

android服务在一个单独的线程中?

android - 应用程序崩溃时的 Activity 生命周期方法

c# - MVVM:我应该从我的执行方法中检查我的 "CanExecute"方法吗?

android - 从服务读取时首选项不是最新的

android - 使用不提供方法访问权限的依赖项导入 GSON

android - 为什么Android Gradle插件无法自动覆盖/忽略已弃用的SDK?

c# - 低级对象上的 DependencyProperty/INotifyPropertyChanged

c# - 如何使过载变得更简单