2013-12-12 4 views
8

アクティビティを作成したいが、それをマニフェストファイルで宣言する必要はない。これは可能ですか?すべてのアクティビティがマニフェストで宣言されている必要がありますが、組み込みのChooserActivityなどのアクティビティがマニフェストファイルで宣言されていないことに気付きました。マニフェストファイル内のすべてのアクティビティを宣言しなければなりませんか?

+0

ChooserActivityは別のマニフェストファイルで宣言され、アプリケーションに公開されます。あなたの質問に答えるのを助けるかもしれないマニフェストにそれを入れないあなたの目標は何ですか? – sgarman

+0

Xamarin.Androidは自動的に属性を使用します(これはJavaの注釈に似ています)。おそらくJavaでこれを行うツールを作成することもできます。 –

答えて

13

短い答え:はい、アプリケーションのすべてのアクティビティをマニフェストで宣言する必要があります。 Androidのドキュメントで説明したように、(とりわけ)マニフェストの目的は次のとおりです。 - アプリケーションが構成されての活動、サービス、ブロードキャストレシーバ、およびコンテンツプロバイダ

これは、アプリケーションのコンポーネントについて説明しますの。コンポーネントの各 を実装し、その機能を公開するクラスに名前を付けます(たとえば、彼らが扱うことができる のインテントメッセージ)。これらの宣言は、Android システムコンポーネントが何であるかを知っていると、彼らは 起動することができますどのような条件の下でみましょう。)

http://developer.android.com/guide/topics/manifest/manifest-intro.html#ifs

したがって、アプリケーション における任意のActivityクラスはあなたのマニフェストで定義する必要があります。これらのコンポーネントがアプリケーションの外部からアクセスできない場合でも、インテント、サービスなどで同じことが起こります。

ChooserActivityとコードで定義しなかったアクティビティは別のマニフェストで独自の定義を持ちます。アプリケーションの外部にある既存のアクティビティを何らかの理由でサブクラス化することを決めた場合は、それをマニフェストにも定義する必要があります。

+1

デザインポイントからAndroidに新しい人がいるので、これはまったく意味がありません!マニフェストに含まれていないアクティビティを定義することはできません。また、コードに含まれていないエントリをマニフェストできないため、コンパイラがそれを処理できないのはなぜですか?例外のマニフェストをデフォルトの設定にしておき、残りの部分をコンパイラに「埋め込む」ようにしてください!なぜ私たちはそれをやりますか? ...それは私の理解が間違っていない限り、私は何かが不足している場合、私は学ぶことができるので、分けてください。今のところ、退屈で不必要な書類のように思えるからです! – MarqueIV

+0

私は明らかに、自分のアプリで*私が定義したアクティビティを指しています。私のアプリで使用できるものはありません(システム提供アクティビティなど)。)あなたがクラスを定義した場合は、それをマニフェストに追加する責任があります。マニフェストは外部のものではなく、定義したアクティビティにのみ適用されます。なぜなら、なぜこれがコンパイラによって推論されないのでしょう?明示的な設定は必要ありませんか?指定されていないもののデフォルトを定義するために 'ImplicitActivity'を追加してください。 – MarqueIV

+0

あなたの議論にはいくつかメリットがあるかもしれません。ただし、1)サポートする既存のツールチェーンとOSバージョンがあること2)プロジェクトやライブラリにアクティビティ/サービス/ブロードキャスト受信者/ etcがあり、アプリケーションを起動したり使用したりしたくない場合があります(基本アクティビティやAppCompatActivityなど)3)これらのコンポーネントのデフォルト設定は、タイトル、アイコン、インテントフィルタ、テーマ、起動モード、メタデータなど4)他の議論や制約があるかもしれません – TheIT

9

アクティビティを作成したいが、それをマニフェストファイルで宣言する必要はない。これは可能ですか?

いいえ、ごめんなさい。

は私が気付いているようないくつかの活動、ビルトインChooserActivity、

その活動は、アプリケーションの一部ではない、私のマニフェストファイルで宣言されていません。これは、コアオペレーティングシステムの一部です。

関連する問題