1

私は1つのアンドロイドプロジェクトで2つのモジュールを作成しました。 (私のアプリモジュールをデフォルトである)Androidのライブラリクラスからアプリモジュールクラスにアクセスするにはどうすればよいですか?

  1. アプリモジュール

  2. と他のライブラリモジュールを追加しました。

今、appモジュールには多くのJavaクラスがあります。ライブラリモジュール内のappモジュール.Java classにアクセスしたいですか?

モジュールのアプリは今、私はLibraryモジュールでクラスDatabaseHelperをインポートしたい

XYZパッケージ内のクラスDatabaseHelperを持っています。

DatabaseHelperはアンドロイドによって認識されません。

質問、

は、別のモジュールにアプリモジュールからクラスをインポートすることが可能ですか?

他の方法です。

MyFilesフォルダ

build.gradle(APP)

compile project(':materialList') 

setting.gradle

include ':app', ':Library' 

答えて

1

いいえ、方法はありません。あなたのデザインを考え直してください。たぶんDatabaseHelperlibraryに移動しますか?

デザインでは、appモジュールとlibraryモジュールの間に循環依存関係が存在します。

他のモジュールの目的は、完全に独立したコードを分離して外部の場所に移動することです。別のモジュールで使用してください。

+0

アプリ内のライブラリモジュール全体を交換するのは良いですか?あまりにも頭痛がかかる。 –

1

クラスをアプリケーションモジュールから別のモジュールにインポートすることはできますか?

これは循環依存関係を作成するため不可能です。

  • データ型を定義:DatabaseHelperContentをlibraryモジュール
  • にライブラリモジュールの実装にインタフェースDatabaseHelperIを定義

    しかし、このシナリオで利用することができるパターンがありますデータを提供することになっています。

  • アプリケーションクラスにそれを参照しながら、データからように、クラスABCのインスタンスとしてインタフェースの初期化
  • (このクラスはappモジュールにある)データを提供する、DatabaseHelperIインタフェースを実装DatabaseHelperImplクラスを作成クラスをサブモジュールに動的に渡すことができます。

これはあなただけで で@Moduleクラスのインタフェースのプロバイダを指定し、どこでも共通プロバイダから注入されたデータを使用することができダガーのようないくつかの依存性注入フレームワーク とさらに簡単になります。

関連する問題