2016-05-10 5 views
0

私は主アクティビティとインジケータと呼ばれる1つのサブクラスを持っています。次に、メインプロジェクトのIndicatorクラスで拡張したいクラスSessionIndicatorを持つライブラリプロジェクトがあります。非アクティビティクラスのライブラリクラスを拡張する

com.example 
|_app 
| |_MainActivity 
| |_Indicator class 
| 
|_library project 
    |_SessionIndicator class 

コード(メインAcitivity、サブクラス):

package com.example.main; 
public abstract class Indicator{} 

コードライブラリプロジェクト:

package com.example.lib; 
public SessionIndicator extends Indicator{} 

インジケータクラスライブラリプロジェクトで見つけることができません。

どうすればこの問題を解決できますか? インジケータクラスをライブラリプロジェクトにインポートするにはどうすればよいですか?

+1

あなたのアプリはあなたのライブラリに依存していると思います。あなたはアプリからライブラリクラスへのアクセスを得ることができます。逆の場合はそうではありません。 –

+0

これは可能ではないと私は考えています。あなたが望むものは、あなたのメインプロジェクトをライブラリプロジェクトに依存させる必要があります。これは、循環依存を作成します。 1つの解決策は、ライブラリのソースコードをメインプロジェクトにインポートすることです。 – urgas9

+0

ライブラリには、メインプロジェクトのパネル用のインジケータが含まれており、動的に追加することができます。メインプロジェクトのインジケータークラスインジケーターのゲッターとセッターがあるので、ライブラリクラスでこのクラスに基づいてカスタムインジケーターを作成したいのですか、それともライブラリを使用するのが間違った方法ですか?私はモジュールのようにそれを使いたい。 –

答えて

0

私のコメントに基づいて: 私はこれが可能ではないと思います。あなたが望むものは、あなたのメインプロジェクトをライブラリプロジェクトに依存させる必要があります。これは、循環依存を作成します。 1つの解決策は、ライブラリのソースコードをメインプロジェクトにインポートすることです。

私はあなたのプロジェクト構造を正しく理解していれば、あなたはライブラリからメインプロジェクトにクラスをインポートすることができます。逆もできません。私はあなたがこのシナリオを避けることができると確信しています。一つの方法は(醜いしかし迅速な修正)、別のライブラリを生成することですあなたのメインプロジェクトから説明し、依存関係/ライブラリとしてインポートします。どの技術を使用しているのか正確にはわかりません。しかし、ビルドツール(Gradle、Maven ...)の循環依存性に注意してください。

+0

私は、インジケータクラスをライブラリプロジェクトに入れて、新しい独立したライブラリプロジェクトを作成すれば、プロジェクトライブラリからインジケータクラスでそのクラスを拡張できますか? –

+0

私はできると思います。要点は、ライブラリプロジェクトのメインプロジェクトからクラスを拡張できないことです。 – urgas9

関連する問題