0


私はAndroidガイドを読んでいて、タグを説明するところにたどり着きました。 <action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER">

私は自分の活動を主な活動にしています。私の質問は次のとおりです。Java で何か (public void main(...)) を入力するのと同じように、ソース コードで同じことを行うことは可能ですか? 2 番目の質問は非常に一般的です。ソース ファイルだけを使用してすべてを xml で行うことは可能ですか?

4

2 に答える 2

1

インテント フィルタ

インテント フィルタは、システムが解決しようとしているインテントを受け取ることができるインストール済みのアプリケーション コンポーネントを見つけようとするために、システムによって使用されます。つまり、インテントが対象となる特定のコンポーネント クラスを指定していない場合です。例えばこんなことをしたら…

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivity(intent);

システムには、開始するアクティビティ (またはサービス、または BroadcastReceiver) を明示的に示すものはありません。Intent を解決できるいくつかのコンポーネントを見つける必要があり、宣言された<intent-filter>s を使用してこれを行います。通常、画像をキャプチャできるアプリ (カメラ アプリなど) は、そのアクティビティがこのアクションを処理することを宣言します。

アプリのランチャー アイコンをクリックすると、ランチャーは基本的に次のようなインテントを作成します。

Intent mainIntent = new Intent(Intent.ACTION_MAIN);
mainIntent.setCategory(Intent.CATEGORY_LAUNCHER);
mainIntent.setPackage(/* your package */);
startActivity(mainIntent);

その結果、システムはおよび<intent-filter>を指定する でそのパッケージ内のコンポーネントを見つけようとします。<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER">

要するに、public static void main()Java の典型的な存在とはまったく関係ありません。

XML

システムが実行時に XML ファイル (レイアウト ファイルなど) をロードすると、ファイルを解析して見つけた情報に基づいて、実際に Java オブジェクトが作成されます。例としてレイアウトを使用すると、すべての異なる XML タグ ( など<ImageView>) に対応する Java クラス ( android.widget.ImageView) があり、XML 属性で設定できるほとんどのプロパティは、これらのビューの public メソッドを使用して設定することもできます。

あなたがそうしたいと思っているなら、自分でインスタンス化してset[Property]()メソッドを使用することで、Activity のレイアウトを完全に Java で構築することができます。これは基本的にシステムが行っていることです。

public void onCreate(Bundle saved) {
    super.onCreate(saved);

    LinearLayout layout = new LinearLayout(this);
    layout.setPadding(20, 20, 20, 20);
    layout.setOrientation(LinearLayout.VERTICAL);

    TextView text = new TextView(this);
    text.setTextSize(18);
    text.setTextColor(Color.MAGENTA);
    text.setText(R.string.hello_world);

    layout.addView(text, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    setContentView(layout);
}

XML ドローアブルでも同様のことが起こりますが、Java でドローアブルを作成する場合はかなり異なります。

つまり、XML で実行できることの多くは Java でも実行できますが、欠点もあります (たとえば、OS が提供する自動リソース処理が失われます)。

于 2013-06-08T04:35:48.687 に答える
0

1、いいえ

2、Android.manitest ファイルは、アプリケーションのプロパティをシステムに伝える記述ファイルです。これを Java コードで置き換えることはできません。

3. 一部のリソース ファイルは Java コードで置き換えることができますが、Java コードを使用して xml ファイルを置き換えるのは得策ではないと思います。MVCで設計されています

于 2013-06-08T01:16:08.627 に答える