web-dev-qa-db-ja.com

styles_base.xmlファイルのエラー-Android app-指定された名前「Android:Widget.Material.ActionButton」に一致するリソースが見つかりません

それでは、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);
   }
}
52
divinesense

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以降もターゲットにしていることを確認してください(以前と同じ手順で、古いバージョンをターゲットとするプロジェクトをアップグレードするときに簡単に忘れられます)。コーディングをお楽しみください...

114
Sachin Kundapur

これらの正確なエラーを自分で解決しました。重要なのは、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プロジェクトに表示されますが、その後のプロジェクトには影響しません。

42
Ben

前提条件

SDKマネージャーを使用して、最新の追加機能とAndroid 5.0 SDKをダウンロードしたことを確認してください。enter image description here

8
back track

これは、5.0 SDKに「更新」し、サポートライブラリを使用して新しいアプリケーションを作成したいと思った後に起こりました。

サポートライブラリとサポートライブラリ自体を使用するプロジェクトの両方のプロジェクト(project.propertiesファイル)で、同じtargetを設定する必要があります

例えば私の場合はうまくいきました

  1. プロジェクトAndroid-support-v7-appcompatproject.propertiestarget=Android-21に変更します
  2. CleanAndroid-support-v7-appcompat私のプロジェクト(サポートライブラリが必要な場所)
  3. 私のプロジェクトでは、project.propertiestarget=Android-21Android.library.reference.1=../Android-support-v7-appcompatに変更します(またはプロジェクトプロパティにサポートライブラリを追加します)
  4. プロジェクトをきれいにする
6
pajus_cz

Android-support-v7-appcompatのプロジェクトビルドターゲットはAPI 19でしたが、API 20に変更しただけでうまくいきました

Android-support-v7-appcompatライブラリプロジェクトを右クリックプロパティに移動AndroidプロジェクトビルドターゲットをAndroid 4.x.xからAndroid 5.0に変更します

これは、他の人にも役立つことを願っています。

4
Somir Saikia

コンパイルSdkバージョンは21に設定されます。 20またはlessに変更します。 Android studioのbuild.gradleに存在します。次に、プロジェクトをクリーンアップして再構築します

4
Panther

私は、Androidからの指示を含むこれらすべての指示に従いました。最終的に修正されたのは、プロジェクトのProject Build TargetをAPIレベルからAPIレベル21に変更したことです。

私はAPI 22(Android 5.1.1)を使用していますが、これは他の回答が書かれたときよりも新しいものです。そのため、6か月前のように、サポートライブラリにtarget = 21を設定することはできません。

2
Walker Rowe

私はAPIレベル21にアプリケーションを書いていますが、上記のすべてを試してみましたが、うまくいきませんでした。最後に、appcompat_v7からValues-v23を削除しました。

2
shiv

Android St​​udioワークアウト用。これは、プロジェクト構造の設定で、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」に変更します

それは私のために働いた。

おかげで: https://stackoverflow.com/a/27243716/4140589

0
jesto paul
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.
0
anand krish

ターゲットを一致するバージョンに変更した後(Benの説明どおり)、まだエラーが表示される場合は、プロジェクトで "Clean"を実行してリソースエラーをクリアします。

0
Ravi

まあ、問題を理解するのに2日かかりました。要するに、デフォルトでは、ダウンロードした最高レベルになるように最大バージョンを維持しなければならない、と私のケースではレベル23(Android M)が言います。

そうしないと、これらのエラーが発生します。ターゲットバージョンを変更するには、プロジェクトとappcompatの両方のプロジェクトプロパティに移動する必要があります。

ため息。

0
Alfred Loh