2

DataBinding 라이브러리를 사용하여 앱에 MVVM을 구현하려고합니다. 달성 한 간단한 작업을 위해 나가는 길을 찾을 수는 있지만 문제는 내가 어떤 행동을 취한 후에 활동을 끝낼 수 없다는 것입니다.Android 데이터 바인딩 활동 완료()

문제 : 뷰 모델 클래스에서 활동을 닫아야 할

특정 방송을받은 후. VM 클래스에는 View에 대한 참조가 없으므로 어떻게해야합니까? 정확하게 말해, 데이터를 다운로드하기 위해 IntentService를 시작하는 스플래시 화면과 해당 VM 클래스가 있습니다. 데이터가 다운로드 된 후 나는 스플래시 화면을 끝내고 MainActivity를 시작해야합니다. VM에서 새 Activity를 시작하는 방법을 찾았지만 이전 작업을 완료하는 것은 수수께끼입니다.

도와주세요. 감사합니다. 여기

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

이 스플래쉬 레이아웃입니다 :

답변

2

ObservableBoolean와 SplashStatus 모델을 작성

<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> 

그리고 바인딩 어댑터 방법 : 데이터 초기화 SplashActivity.java에서

@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(); 
    } 
} 

onCreate에 바인딩. 완료시에 isFinished.set(true)을 할당 할 때마다 MainActivity가 시작되고 현재 완료됩니다.