問題タブ [mortar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
486 参照

java - Mortar / Flow は、バックスタックにビューとプレゼンターを保存します

Mortar/Flow/Dagger2で遊んでいます。
私のアプリには2つの画面があります:

  • 画面 1 に Google マップが表示されます。MapFragment ではなく MapView オブジェクトを直接使用しており、ルート アクティビティのライフサイクル イベントに適切にフックしました。

  • 画面 2 は、マップ マーカーからの情報を示しています。画面 1 から画面 2 に移動します。Flow.get(context).goTo(new Screen2());

問題は、スクリーン 2 からスクリーン 1 に戻ると、 を使用Flow.get(context).goBack();してスクリーン 1 とその MapView がゼロから再作成され、以前の状態などが失われることです。実際、スクリーン 1 とそのプレゼンターのビューの両方が破棄されていることがわかります。画面 2 に移動すると、画面 1 に戻るとすべてが再作成されます。

フロー サンプルにビュー ステートを保存および復元するメカニズムがあることは知っていますが (私はそれを使用しています)、十分ではないようです。

バックスタックで、画面 1 のビューとプレゼンターの状態を保存して復元する方法はありますか? Activity1 と Activity2 で自然に行われるように、正しいナビゲーション ワークフローを実現するためです。

ありがとう!

0 投票する
1 に答える
210 参照

android - ActionBarDrawerToggle の Activity への参照を渡すにはどうすればよいですか?

SquareのMortarとFlowを使おうとしています

問題は次のとおりですActionBarDrawerToggle。support-v7 からは、アクティビティへの参照が必要です。

しかし、私は得るのでview.getContext()返しますPathContext

ClassCastException: flow.path.PathContext cannot be cast to android.app.Activity

では、アクティビティへの参照を取得するにはどうすればよいでしょうか。

0 投票する
2 に答える
2718 参照

android - Flow と Mortar の使用を開始する

Android で Mortar と Flow を使用するための簡単なガイドをウェブ全体で検索していましたが、説明されているコードの一部を見つけました。

このライブラリがどのように機能するかを理解するのは本当に難しいです。

0 投票する
1 に答える
724 参照

android - Mortar および Flow ライブラリと ViewPager の比較

アプリで Mortar&Flow を適応させようとしていますが、PageAdapter を Fragments ではなく Screen で動作させることができないという問題に直面しました。

誰でもそれを正しくすることができましたか?

私は成功しませんでしたが、おそらく誰かがこの時点から私を導くことができます:

最初のダガー登録:

View が ViewPager をホストしている MainScreen:

メインビュー:

さて、主要部分であるサブスクリーン (3 つの類似した画面で、渡すパラメーターのみが異なります => これらのパラメーターに従ってビューを調整する必要があります)

それはビュー public class SubView extends FrameLayout {

カスタム ページャー アダプター:

問題文:「Layouts.createView(childContext, screen);」で SubView クラスがインジェクションのリストに追加されていないため、クラッシュしています。SubScreen から SubScreen.Presenter へのデータの @provider が必要なため、デフォルトでは追加できません。(ローカル変数を使用しています。

SubView.classをインジェクションのリストに追加し、ローカル Screen の変数を静的に変換すると、ViewPager 内に 3 つの同一のページが作成されます (これは、コンストラクターの次の呼び出しごとに古い静的変数をオーバーライドするため、論理的です)。

ヘルプ/アイデアはありますか? 助けてくれてありがとう、コンスタンチン

0 投票する
0 に答える
201 参照

android - フローのサブコンテナー

フロー内でサブコンテナを構築する方法に関するドキュメントはありますか?

たとえば、マスター、詳細ビューがあります。

独自のバックスタックを持つポップアップ ビューを追加するつもりです。ポップアップは、セットアップ手順を完了するようにユーザーに求めるウィザードとして機能し、ポップアップとして表示されます。

マスター コンテナーもある点を除いて、以下のレイアウトのようなもの (完全に表示されたドロワー レイアウト)

ここに画像の説明を入力

これはどのように達成できますか?詳細 (または親) コンテナーは、ポップアップ コンテナーの存在について知る必要がありますか? このようなもの?

それはすべきことですか?考え?

0 投票する
2 に答える
261 参照

android - 画面間で Mortar スコープが持続しないようにするにはどうすればよいですか?

Mortar/Flow と Dagger 2 を使用してアプリをセットアップしました。同じクラスの 2 つのビューを切り替える場合を除いて、機能しているようです。新しいビューは、前のビューのプレゼンターで終了します。

たとえば、conversationId をコンストラクター引数として受け取る ConversationScreen があります。初めて ConversationScreen を作成して Flow に追加すると、ConversationView が作成され、画面に渡された conversationId で作成された Presenter が挿入されます。次に、別の conversationId で新しい ConversationScreen を作成すると、ConversationView がプレゼンターを要求すると、以前の ConversationScreen でスコープがまだ閉じられていないため、Dagger は古いプレゼンターを返します。

新しい画面をセットアップする前に、前の画面のスコープを手動で閉じる方法はありますか? それとも、最初から間違ったスコープを設定しただけですか?

会話ビュー

会話画面