2

私は、アプリケーションでMVBMLをDataBindingライブラリで実装しようとしています。私が達成した単純な仕事のために、道を見つけることができますが、問題は私が何らかの行動の後に活動を終わらせることができないことです。Android DataBinding Activity finish()

問題:私はViewModelにクラスから活動をクローズする必要が

特定の放送を受信した後。 VMクラスにはビューの参照がないので、どのようにアクティビティを終了できますか? 正確には、データをダウンロードするためのIntentServiceを開始するためのスプラッシュ画面とそれに対応するVMクラスがあります。データがダウンロードされた後、私はスプラッシュ画面を終了し、MainActivityを起動しなければなりません。 VMから新しいアクティビティを開始する方法を見つけましたが、前のアクティビティを完了するには謎です。

私を助けてもらえますか? ありがとう!

答えて

2

ObservableBooleanでSplashStatusモデルを作成します。ここでは

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

は、あなたのスプラッシュレイアウトは次のとおりです。

<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が開始され、現在の処理が終了します。

関連する問題