問題タブ [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.
android - 注入が登録されていません。モジュールの 1 つの 'injects' オプションに明示的に追加する必要があります。
こんにちは、私はダガーが初めてで、シンプルな Android アプリで勉強しようとしています。
このビューを挿入するモジュールがあっても、タイトルからエラーが発生します。ビューが挿入されない理由を理解するのを手伝ってくれる人はいますか?
アプリのメインモジュールは次のとおりです。
私のビューを挿入する別のモジュール:
ご覧のとおり、 SidemenuScreen.ModuleinjectsSidemenuViewと addsToAppModuleです。私が間違っている ?
ObjectGraph はonCreate()、私の Application クラスのメソッドで次のように作成されます。
注入する必要があるビュー
このすべてのものを使用するアクティビティ:
ここでは、このスライディング メニュー ライブラリを使用します。
したがって、menu.setMenu(R.layout.sidemenu);呼び出されるとビューが膨張し、エラーが発生Mortar.inject(context, this);したコンストラクターから呼び出されます。SidemenuView
バックスタックは次のとおりです。
android - Mortar: 1 つのアクティビティで同じビューのインスタンスをいくつか持つ
Mortar ライブラリを使用して、1 つのアクティビティ内に同じビューのインスタンスをいくつか持つことは可能ですか? この場合、アクティビティのスコープを初期化する方法は? または、ビューごとに別のスコープを作成する必要がありますか?
私が欲しいもの:
MyActivity - MyView (id:1) - MyView (id:2)
試してみましたが、Presenter の onLoad/onSave がすべてめちゃくちゃになってしまいました。
java - 向きの変更時にアクティビティを漏らさずに、MortarActivityScope のアクティビティを @Provide する方法は?
ルート スコープの下の最初の子として MortarActivityScope を持つ Mortar アプリケーションがあります。MortarActivityScope には、注入されたクラスのアクティビティを @Provides する ActivityScope があります。
これは、向きの変更が発生するまでは問題ありません。Mortar サンプル プロジェクトでは、向きが変わってもアクティビティ スコープは破棄されません。これはおそらく、@Singleton プレゼンター、スクリーンなどを向きの変更後も保持できるようにするためです。これは、サンプル プロジェクトのメイン アクティビティの onDestroy() メソッドで確認できます。
ただし、このようにすると、向きが変わっても古い ObjectGraph が存続することになります。Mortar.requireActivityScope古いアクティビティ スコープのモジュールが、新しいブループリントによって提供される新しいモジュールに置き換えられないことがわかりました。代わりに、オブジェクト グラフは、破棄されたアクティビティを含む、前のモジュールへの参照を保持します。
@Provides ActivityMortar サンプル アクティビティは、メイン モジュールにメソッドを含めないことで、これを回避しているようです。しかしMortarActivityScope、Activity を注入できるべきではありませんか? 向きの変更時にすべてのシングルトン オブジェクト (Presenterオブジェクトなど) を失うことなく、これを行うための推奨される方法は何ですか?
android - フロー サンプル SimpleSwitcher サブコンテナー
Flow サンプル アプリの最近の更新で、カスタマイズされたサブコンテナーを許可する方法としてPathContextを使用する SimpleSwitcher を導入しました。
この用語について詳しく説明してください。また、サブコンテナの意味について例を挙げていただけますか?
また、Mortar の実装にどのように影響しますか? Mortar スコープの作成には親 Context が必要なため、PathContext は画面スコープのチェーンを作成します。つまり、それぞれがその祖先に応じて HomeScreen -> ListScreen -> DetailsScreen になります。そのため、HomeScreen スコープを破壊すると、残りのスクリーン スコープが失われ、非常に悲しくなります。以前のスクリーン スコープを離れた後も保持する意味がわかりません。ActivityScope をそれぞれの親にすることをお勧めします (以前の Mortar の例と同様)。この場合、別の ScreenSwitcher impl が必要ですか、それとも何か不足していますか?
編集:ScreenScoperではなく、ScreenSwitcher
android - otto イベントを介して更新されたリスト要素を Mortar の画面に配信する
mortar-sampleに基づいてアイテムのリストを表示する単純なアプリケーションにMortarを使用しようとしています。
Retrofit/Gsonを使用してこれらのアイテムのメタデータをフェッチし、Otto を使用してアイテムがダウンロードされたらビューに更新を配信します。オブジェクトの作成にも Dagger を使用しています。
リスト内のアイテムを表示するために実装するクラスと、実装するItemListクラスがあります。ListViewItemListScreenmortar.Blueprint
アダプタ アイテムを更新するサブスクライブ メソッドを配置するのに最適な場所はどこですか? 現在、私はそれを下に置いていItemListScreen.Presenterますが、サブスクライブメソッドは決して呼び出されません!!
hadoop - pig スクリプト: null フィールドで count が 0 を返す
私はjsonの「会社」セクションでファイルをロードする豚のスクリプトを持っています。カウントを実行すると、ファイルにドメインがない (または null) 場合、カウントは 0 になります。空の文字列としてグループ化して、それをカウントするにはどうすればよいですか?
ファイルの例:
予想された結果:
実績:
現在の豚のスクリプト:
助けてくれてありがとう!
java - Mortar と Flow の onActivityResult と同等ですか?
onActivityResult で行うのと同様に、前の画面で構築されたものを失うことなく、フローを使用して画面から結果を返す方法を探しています。たとえば、新しいドキュメントを作成している画面は次のとおりです。
これどうやってするの?私はPopupとPopupPresenterを試してきましたが、これらに関する情報は多くなく、セレクターはそれ自体が画面であるため、これが正しい方法であるとは確信していません。
更新 – 考えられる解決策
@rjrjrからの以下の回答に基づいて、問題なく動作するように思われる次のことを行いました。
TakesResult.java
NewDocumentScreen.java
ChooseAuthorScreen.java
mortar - ビュークラス内でレイアウトを膨らませる代わりに、ビュークラスをレイアウトに配置する理由は何ですか?
Mortar ビューは、そのコンテンツを直接膨張させません。代わりに、モルタル ビューを含むレイアウトにはビュー コンテンツがネストされるという前提があります。
ビューとレイアウトの接続を管理するのが少し難しくなっていると思います。
ビュークラス内でレイアウトを膨らませる代わりに、ビュークラスをレイアウトに配置する理由は何ですか?