hog*_*gar 5 data-binding android mvvm android-activity android-databinding
我正在尝试使用DataBinding库在我的应用程序中实现MVVM。对于已经完成的简单任务,我可以找到出路,但是问题是我不能在完成某些操作后完成活动。
问题:
收到特定的广播后,我必须关闭ViewModel类的活动。由于VM类没有View的引用,我该如何完成活动?确切地说,我有启动屏幕和相应的VM类,用于启动IntentService来下载数据。数据下载后,我必须完成启动屏幕并启动MainActivity。我已经找到了从VM启动新的Activity的方法,但是要完成上一个是个谜。
你能帮我么?谢谢!
使用ObservableBoolean创建一个SplashStatus模型:
private static class SplashStatus {
public final ObservableBoolean isFinished = new ObservableBooelan();
}
Run Code Online (Sandbox Code Playgroud)
这是您的初始布局:
<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>
Run Code Online (Sandbox Code Playgroud)
和绑定适配器的方法:
@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();
}
}
Run Code Online (Sandbox Code Playgroud)
在SplashActivity.java
初始化中,您的数据绑定在onCreate上。每当您分配isFinished.set(true)
onFinished方法时,都会启动MainActivity并完成当前操作。