1

私はライブラリプロジェクトで定義されている共有アクティビティクラスを持っているとします。ではなくであるため、ではなくをサブクラス化する必要があります。このアクティビティをサブクラス化せずにアプリケーションを作成する方法はありますかそれら?アクティビティベースのアプリケーションには何のアクティビティもありませんか?

より良い私の質問を説明するために、私は図書館プロジェクトで単一のアクティビティを持っていると言う:

public class LibActivity extends Activity { 
... 
} 

そして今、私はそのライブラリプロジェクトを使用してアプリケーションを作成しています。私は実際にアプリケーションが独自のAndroidManifest.xmlで参照されるように、自身の活性を有する唯一のよう

public class AppActivity extends LibActivity { 
// totally empty! 
} 

を作成する必要がありますか?

最小限のアプローチで、ライブラリのアクティビティのコア動作を変更する必要がある場合にのみアクティビティをサブクラス化する方法がありますか?

答えて

2

ここのように完全修飾名を指定して、完全修飾の答えです:

はい、する必要はありませんアクティビティベースのアプリケーションは、ライブラリの活動から活動を導き出します。アプリケーションはそのままライブラリの活動をそのまま使用します。

はい、私はアクティビティのサブクラスの場合にのみ、ライブラリのアクティビティのコア動作を変更する必要があります。

AndroidManifest.xmlでこれを確認することができました。これは、と同じです。ライブラリとアプリケーションの両方で確認できました。この冗長性のいくつかが排除できるかどうかを確認することは興味深いでしょう。私はこれを実験して報告します。

UPDATE:十分は確かに、唯一の活動は、ライブラリで定義されており、ライブラリのAndroidManifest.xmlは、任意の<application>または<activity>を持たないで完全に動作しているアプリケーションを作成することが可能です!これは、アプリケーションのAndroidManifest.xmlにそれらがある場合に可能です。

1

ライブラリアクティビティクラスは、アプリケーションAndroidManifest.xmlから直接参照できます。ただ、そうandroid:name="com.example.LibActivity"

+0

これに答える唯一の人であることに感謝します。私はまもなく正確な回答を投稿します(すべての利益のために)が、私はあなたに、私が図書館での活動の完全なものを指定する必要さえもないことをすでに伝えることができます。 – ef2011

+0

説明:ライブラリとアプリケーションの両方が**同じ正確なパッケージ名**を共有しているため、ライブラリ内のアクティビティの完全修飾名を指定する必要はありませんでした。彼らが異なるパッケージ名を持っていれば、当然sparkymatのアドバイスを受けなければなりません。 – ef2011

関連する問題