ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android DataBinding Activity完成()

2019-06-27 20:12:51  阅读:395  来源: 互联网

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


我试图在我的应用程序中使用DataBinding库实现MVVM.对于我已经完成的简单任务,我可以找到解决方法,但问题是我在完成一些操作后无法完成活动.

问题:

收到特定广播后,我必须关闭ViewModel类的活动.由于VM类没有View的引用,我该如何完成活动?
确切地说,我有启动屏幕和相应的VM类,它启动IntentService来下载数据.下载数据后,我必须完成启动画面并启动MainActivity.我已经找到了从VM启动新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>

和绑定适配器方法:

@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上初始化数据.每当您指定isFinished.set(true)onFinished方法时,将启动您的MainActivity并完成当前.

标签:android,android-activity,data-binding,mvvm,android-databinding
来源: https://codeday.me/bug/20190627/1308199.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有