1

Conductor を使用して Bottom Nav バーのナビゲーションを処理するアプリがあります。簡潔にするために、できるだけ簡潔に説明しようとします。アプリには十分な量のロジックが用意されており、できるだけ触れないようにしたい

私が抱えている問題はControllerChangeHandler.onChangeCompleted()

下部のナビゲーションは次のように構成されています。

Dashboard | Login | Doctors | Locations | More

Loginユーザーがタブを介してログインすると、すぐにConductorポップアップしてDashboard Controller新しいアクティビティが起動されるため、ユーザーが戻るボタンを押すと、BottomNav アクティビティに戻り、ダッシュボードに着陸します。

私が抱えている問題は、新しいアクティビティが開始される前に、ダッシュボード ビューが 0.5 秒間点滅するのをユーザーが見ることができることです。

  router.popToTag(newTag, null)

^^ChangeHandlerビューのスワップを防ぐために null を渡す必要がありますか? それとも、派手なアニメーションなしでビューを簡単に交換しますか?? これが私の混乱の原因だと思います。

null に設定することでアニメーションが表示されないことを期待していましたがChangeHandler、アクティビティを起動する前にビューが切り替わります。

残念ながら、私のログイン ロジックとフローは に大きく依存していOnChangeCompleted()ます。したがって、コンダクターが新しいコントローラーにポップする必要があります。ユーザーには完全に見えないようにする必要があります...

何かアドバイス??コード行のすぐ下にある私の質問に答えられれば、大いに役立つと思います。

4

1 に答える 1

0

com.bluelinelabs.conductor.internal.NoOpControllerChangeHandlerConductorには、ユース ケースに適合するクラスが同梱されています。ソースを見ると、 call 以外は何もしていませんControllerChangeCompletedListener.onChangeCompleted()。私が理解しているように、それはビューが追加または削除されないことを意味するはずです。

変更ハンドラの受け渡しに関する質問に答えるために、null変更の処理を担当するライブラリの内部メソッドには次のコードが含まれています。

if (inHandler == null) {
    handler = new SimpleSwapChangeHandler();
} else if (inHandler.hasBeenUsed && !inHandler.isReusable()) {
    handler = inHandler.copy();
} else {
    handler = inHandler;
}

whereinHandlerは、メソッドに渡した変更ハンドラを参照しますpopToTagSimpleSwapChangeHandlerあなたが発見したのとまったく同じように、アニメーションなしでビューを交換します。

于 2019-09-11T15:57:52.943 に答える