3

注: XML リソースを解析するとき、Android は現在のデバイスでサポートされていない XML 属性を無視します。そのため、新しいバージョンでのみサポートされている XML 属性を安全に使用でき、そのコードに遭遇したときに古いバージョンが壊れることを心配する必要はありません。たとえば、targetSdkVersion="11" を設定すると、アプリにはデフォルトで Android 3.0 以降の ActionBar が含まれます。メニュー項目をアクション バーに追加するには、メニュー リソース XML で android:showAsAction="ifRoom" を設定する必要があります。古いバージョンの Android は単に showAsAction 属性を無視するため (つまり、res/menu-v11/ に別のバージョンを用意する必要がないため)、クロスバージョンの XML ファイルでこれを行うのは安全です。

ソース: http://developer.android.com/training/basics/supporting-devices/platforms.html

^ この主張にもかかわらず、eclipse は同じサイトhereからフラグメントの基本の変更されていないバージョンをコンパイルすることを拒否しています。

表示されるエラー メッセージは次のとおりです。

文字列型は許可されていません (値 'match_parent' の 'layout_width' で)。

特定のAPIレベルにのみ適用されることを示すサイレントタグのような、XML内でこのエラーを抑制することができる方法はありますか? 理想的には、プロジェクトが Eclipse で動作し、1.6 の下位互換性も維持することを望んでいます。

注: 他のすべてのエラーは R が生成されていないことに関連しており、これが唯一の最初の生成エラーになります。

マニフェスト ファイルには次の行が含まれています

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
4

3 に答える 3

1

新しい API でコンパイルでき、アプリケーションは引き続き古い API で動作するため、最初に関連するチェックを行わずに .java ファイルでサポートされていない機能を使用しない限り、これらのエラーを取り除くことができます。最高の API ではなく、最低の API に対してコンパイルする必要があると思いましたが、1.6 AVD を使用して 4.0 を使用してコンパイルされたプロジェクトを実行することをテストしたところ、問題なく動作しました。

于 2012-06-29T21:08:52.727 に答える
0

「match_parent」の代わりに「fill_parent」を使用してみましたか?また、APIレベルごとに異なる属性値を使用する場合は、values-4(1.6 android)およびvalues(その他すべて)フォルダーにこれらの属性を配置することで、スタイルxmlエントリを作成できます。

于 2012-06-28T20:24:45.320 に答える
0

API 8以下に対してアプリを構築している場合は、を使用する必要がありますfill_parent。とは言うものの、最近のほとんどの開発者は、サポートする最小のSDKとしてAPI 8を使用しているため、新しいAPIに対してアプリを構築することを検討する必要があります。

于 2012-06-28T20:31:36.383 に答える