それでは、Android開発の初心者で、hello worldアプリを作成しました。しかし、styles_base.xml
ライブラリのappcompat_v7
ファイルでエラーが発生します。
エラー:アイテムの親の取得エラー:指定された名前「Android:Widget.Material.ActionButton」に一致するリソースが見つかりませんでした。 styles_base.xml/appcompat_v7/res/values-v21
AAPTの問題
このエラーをどのように処理しますか?また、appcompat_v7ライブラリが必要ないときに使用されるのはなぜですか? appcompat_v7ライブラリを使用せずにhello worldアプリを作成するにはどうすればよいですか?
これは、上記のエラーが発生しているstyles_base.xml
ファイルです。
<resources>
<!-- Like in themes_base.xml, the namespace "*.AppCompat.Base" is used to
define base styles for the platform version. The "*.AppCompat"
variants are for direct use or use as parent styles by the app. -->
<eat-comment/>
<style name="Base.Widget.AppCompat.ActionBar.TabView"
parent="Android:Widget.Material.ActionBar.TabView">
</style>
<style name="Base.Widget.AppCompat.Light.ActionBar.TabView"
parent="Android:Widget.Material.Light.ActionBar.TabView">
</style>
<style name="Base.Widget.AppCompat.ActionBar.TabText"
parent="Android:Widget.Material.ActionBar.TabText">
</style>
<style name="Base.Widget.AppCompat.Light.ActionBar.TabText"
parent="Android:Widget.Material.Light.ActionBar.TabText">
</style>
<style name="Base.Widget.AppCompat.Light.ActionBar.TabText.Inverse"
parent="Android:Widget.Material.Light.ActionBar.TabText">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu"
parent="Android:TextAppearance.Material.Widget.ActionBar.Menu">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title"
parent="Android:TextAppearance.Material.Widget.ActionBar.Title">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
parent="Android:TextAppearance.Material.Widget.ActionBar.Subtitle">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
parent="Android:TextAppearance.Material.Widget.ActionBar.Title.Inverse">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle.Inverse"
parent="Android:TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Title"
parent="Android:TextAppearance.Material.Widget.ActionMode.Title">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Subtitle"
parent="Android:TextAppearance.Material.Widget.ActionMode.Subtitle">
</style>
<!-- Action Button Styles -->
<style name="Base.Widget.AppCompat.ActionButton"
parent="Android:Widget.Material.ActionButton">
</style>
<style name="Base.Widget.AppCompat.ActionButton.CloseMode"
parent="Android:Widget.Material.ActionButton.CloseMode">
</style>
<style name="Base.Widget.AppCompat.ActionButton.Overflow"
parent="Android:Widget.Material.ActionButton.Overflow">
</style>
<!--
Widget.AppCompat.Toolbar style is purposely ommitted. This is because the support
Toolbar implementation is used on ALL platforms and relies on the unbundled attrs.
The supporting Toolbar styles below only use basic attrs so work fine.
-->
<style name="Base.Widget.AppCompat.Toolbar.Button.Navigation"
parent="Android:Widget.Material.Toolbar.Button.Navigation">
</style>
<style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Title"
parent="Android:TextAppearance.Material.Widget.ActionBar.Title">
</style>
<style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
parent="Android:TextAppearance.Material.Widget.ActionBar.Subtitle">
</style>
<!-- Spinner Widgets -->
<style name="Base.Widget.AppCompat.ListView.DropDown"
parent="Android:Widget.Material.ListView.DropDown"/>
<style name="Base.Widget.AppCompat.DropDownItem.Spinner"
parent="Android:Widget.Material.DropDownItem.Spinner"/>
<style name="Base.Widget.AppCompat.Spinner" parent="Android:Widget.Material.Spinner" />
<style name="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" parent="Android:Widget.Material.Spinner">
<item name="spinnerMode">dropdown</item>
<item name="disableChildrenWhenDisabled">true</item>
<item name="popupPromptView">@layout/abc_simple_dropdown_hint</item>
</style>
<style name="Base.Widget.AppCompat.ListView.Menu"
parent="Android:Widget.Material.ListView" />
<!-- Popup Menu -->
<style name="Base.Widget.AppCompat.ListPopupWindow" parent="Android:Widget.Material.ListPopupWindow">
</style>
<style name="Base.Widget.AppCompat.PopupMenu" parent="Android:Widget.Material.PopupMenu">
</style>
<style name="Base.Widget.AppCompat.Light.PopupMenu"
parent="Android:Widget.Material.Light.PopupMenu">
</style>
<style name="Base.Widget.AppCompat.PopupMenu.Overflow">
<item name="Android:dropDownHorizontalOffset">-4dip</item>
<item name="Android:overlapAnchor">true</item>
</style>
<style name="Base.Widget.AppCompat.Light.PopupMenu.Overflow">
<item name="Android:dropDownHorizontalOffset">-4dip</item>
<item name="Android:overlapAnchor">true</item>
</style>
<style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Large"
parent="Android:TextAppearance.Material.Widget.PopupMenu.Large">
</style>
<style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Small"
parent="Android:TextAppearance.Material.Widget.PopupMenu.Small">
</style>
<style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"
parent="Android:TextAppearance.Material.Widget.PopupMenu.Large">
</style>
<style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"
parent="Android:TextAppearance.Material.Widget.PopupMenu.Small">
</style>
<!-- Search View result styles -->
<style name="Base.TextAppearance.AppCompat.SearchResult.Title"
parent="@Android:TextAppearance.Material.SearchResult.Title">
</style>
<style name="Base.TextAppearance.AppCompat.SearchResult.Subtitle"
parent="@Android:TextAppearance.Material.SearchResult.Subtitle">
</style>
<style name="Base.Widget.AppCompat.AutoCompleteTextView" parent="Android:Widget.Material.AutoCompleteTextView" />
<style name="Base.Widget.AppCompat.Light.AutoCompleteTextView" parent="Android:Widget.Material.AutoCompleteTextView" />
<!-- Progress Bar -->
<style name="Base.Widget.AppCompat.ProgressBar.Horizontal"
parent="Android:Widget.Material.ProgressBar.Horizontal">
</style>
<style name="Base.Widget.AppCompat.ProgressBar"
parent="Android:Widget.Material.ProgressBar">
</style>
<!-- TODO. Needs updating for Material -->
<style name="Base.Widget.AppCompat.ActivityChooserView" parent="">
<item name="Android:gravity">center</item>
<item name="Android:background">@drawable/abc_ab_share_pack_holo_dark</item>
<item name="Android:divider">?attr/dividerVertical</item>
<item name="Android:showDividers">middle</item>
<item name="Android:dividerPadding">6dip</item>
</style>
これは私が使用しているコードです。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Android SDKがインストールされているディレクトリに移動し、[extras]> Android> support> v7> appcompatに移動します。
私の場合:D:\ Software\adt-bundle-windows-x86-20140702\sdk\extras\Android\support\v7\appcompat
appcompatフォルダーに入ったら、project.propertiesファイルを確認し、値をデフォルトの19から21に変更します。
target=Android-21.
ファイルを保存してから、プロジェクトを更新します。
次に、プロジェクトをクリーンアップします。[プロジェクト]タブで、[クリーン]オプションを選択し、プロジェクトを選択してクリーン...
これでエラーが解決します。そうでない場合は、プロジェクトがAPI 21以降もターゲットにしていることを確認してください(以前と同じ手順で、古いバージョンをターゲットとするプロジェクトをアップグレードするときに簡単に忘れられます)。コーディングをお楽しみください...
これらの正確なエラーを自分で解決しました。重要なのは、appcompatライブラリプロジェクトのproject.properties
ファイルが、特定のappcompatプロジェクトが記述されているAPIの最高バージョン(この場合はv21のように見える)を使用する必要があることです。私が見つけた最も簡単な方法は、resフォルダー内で最も高い 'values-v **'フォルダー(例、values-v21
)を探すことです。
明確にするために、 サポートライブラリのセットアップ の手順に加えて、appcompat/project.properties
ファイルにはtarget=Android-21
が含まれている必要があります(代わりに19が付属しています)。
また、そのバージョンと一致する「SDKプラットフォーム」がインストールされていることを確認してください(たとえば、v21 install Android 5.0 SDK Platform)。
appcompat-v7:21.0.0 ':指定された名前に一致するリソースが見つかりません:attr' Android:actionModeShareDrawable '
または、appcompatをまったく使用したくない場合は、プロジェクトを右クリックして[プロパティ]> [Android]> [ライブラリ]> appcompatへの参照を削除するだけです。エラーは引き続きappcompatプロジェクトに表示されますが、その後のプロジェクトには影響しません。
前提条件
SDKマネージャーを使用して、最新の追加機能とAndroid 5.0 SDKをダウンロードしたことを確認してください。
これは、5.0 SDKに「更新」し、サポートライブラリを使用して新しいアプリケーションを作成したいと思った後に起こりました。
サポートライブラリとサポートライブラリ自体を使用するプロジェクトの両方のプロジェクト(project.properties
ファイル)で、同じtarget
を設定する必要があります
例えば私の場合はうまくいきました
Android-support-v7-appcompat
でproject.properties
をtarget=Android-21
に変更しますAndroid-support-v7-appcompat
私のプロジェクト(サポートライブラリが必要な場所)project.properties
をtarget=Android-21
とAndroid.library.reference.1=../Android-support-v7-appcompat
に変更します(またはプロジェクトプロパティにサポートライブラリを追加します)Android-support-v7-appcompatのプロジェクトビルドターゲットはAPI 19でしたが、API 20に変更しただけでうまくいきました
Android-support-v7-appcompat
ライブラリプロジェクトを右クリックプロパティに移動AndroidプロジェクトビルドターゲットをAndroid 4.x.xからAndroid 5.0に変更します
これは、他の人にも役立つことを願っています。
コンパイルSdkバージョンは21
に設定されます。 20
またはless
に変更します。 Android studioのbuild.gradle
に存在します。次に、プロジェクトをクリーンアップして再構築します
私は、Androidからの指示を含むこれらすべての指示に従いました。最終的に修正されたのは、プロジェクトのProject Build TargetをAPIレベルからAPIレベル21に変更したことです。
私はAPI 22(Android 5.1.1)を使用していますが、これは他の回答が書かれたときよりも新しいものです。そのため、6か月前のように、サポートライブラリにtarget = 21を設定することはできません。
私はAPIレベル21にアプリケーションを書いていますが、上記のすべてを試してみましたが、うまくいきませんでした。最後に、appcompat_v7からValues-v23を削除しました。
Android Studioワークアウト用。これは、プロジェクト構造の設定で、SDKのコンパイルバージョンをAPI23(Android 6)からAPI17(Android 4.2)に手動で変更し、レイアウトファイルのコードを変更しようとすると発生することがわかりました。
新しいプロジェクトでも、「Minimum SdK」を4.2に選択しているので、手動で変更する必要があると思いました。
API23に戻すだけで解決し、Android 4.2で実行できます。 ^^
Android SDKインストールディレクトリを開いてから、
私のパスで:
E:\ Android\sdk\extras\Android\support\v7\appcompat
その後、「project.properties」ファイルを見ることができます
それを開き、ターゲット「target = Android-19」を「target = Android-23」に変更します
それは私のために働いた。
Download the latest "sdk platform" and "sdk build tools" of same version like 23.* for
both from "sdk Managar".
(参照については、上記の バックトラック のホスト画像を参照してください)。次に、プロジェクトを右クリック->プロパティ-> Android-> [プロジェクトビルドプロパティ]で[APIレベル] 23または更新した最新のものを選択します。次に、プロジェクトを1回クリーニングします。
Note: But all three should be in same version.
ターゲットを一致するバージョンに変更した後(Benの説明どおり)、まだエラーが表示される場合は、プロジェクトで "Clean"を実行してリソースエラーをクリアします。
まあ、問題を理解するのに2日かかりました。要するに、デフォルトでは、ダウンロードした最高レベルになるように最大バージョンを維持しなければならない、と私のケースではレベル23(Android M)が言います。
そうしないと、これらのエラーが発生します。ターゲットバージョンを変更するには、プロジェクトとappcompatの両方のプロジェクトプロパティに移動する必要があります。
ため息。