EclipseからAndroid Studio 3.2、API 28の新しいバージョンに移行した後、アプリのレイアウトで次のエラーが表示されます。
レイアウトのレイアウトには、ベースレイアウトフォルダーに宣言がありません。これは、この修飾子と一致しない構成でリソースが照会されるとクラッシュする可能性があります
このエラーが発生しているレイアウトの1つは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:background="@null" >
<FrameLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<ImageView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="top|center_horizontal"
Android:adjustViewBounds="true"
Android:contentDescription="@string/hello_world"
Android:src="@drawable/loading_top" />
<ImageView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom|center_horizontal"
Android:adjustViewBounds="true"
Android:contentDescription="@string/hello_world"
Android:src="@drawable/loading_bottom" />
<ImageView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:contentDescription="@string/hello_world"
Android:background="@color/white"
Android:layout_marginBottom="5dp"
Android:paddingTop="10dp"
Android:paddingBottom="10dp"
Android:src="@drawable/loading_logo" />
<ImageView
Android:id="@+id/loading"
Android:layout_width="fill_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center|center_vertical"
Android:layout_marginBottom="0dp"
Android:layout_marginTop="0dp"
Android:contentDescription="@string/hello_world"
Android:scaleType="fitXY"
Android:src="@null" />
</FrameLayout>
</LinearLayout>
最初のLinearLayoutの最初の行でエラーが発生します。
誰もこのエラーを解決する方法を知っていますか?
ありがとうございました
更新:エンコードの問題のようです。Windowsエクスプローラを使用してフォルダ内のxmlファイルをコピーしました。ファイルを削除してAndroid Studio内にコピーした後、問題は解決しました。 。
私の場合、Androidスタジオを閉じて再度開くと問題が解決しました。プロジェクトを再構築するか、キャッシュを無効化しても解決しませんでした。
レイアウトを考案する場合:layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp
このようにデフォルトでレイアウトを追加する必要があります:
私の場合、 this で解決しました:
Androidは私にこう言いますid-error: MissingDefaultResource
リソースが-landや-enのような修飾子を持つフォルダーでのみ定義され、ベースフォルダー(レイアウトや値など)にデフォルトの宣言がない場合、そのリソースがデバイスでアクセスされるとアプリがクラッシュします指定された修飾子が欠落している構成にあります。
特別な場合として、ドロアブルをベースフォルダーで指定する必要はありません。密度フォルダー(drawable-mdpiなど)に一致するものがある場合、その画像が使用され、スケーリングされます。ただし、drawable-en-hdpiなどのフォルダーでドロアブルのみを指定すると、英語以外のロケールでアプリがクラッシュすることに注意してください。
-fr drawableなど、同じ修飾子を持つ他のリソース(-frスタイルなど)からのみ参照されるリソースがあり、それ自体に安全なフォールバックがあるシナリオがあります。ただし、これにより、誰かが誤ってドロアブルを参照してクラッシュする可能性があるため、ベースフォルダーにデフォルトのダミーフォールバックを作成する方が安全です。または、要素にtools:ignore = "MissingDefaultResource"を追加して、問題を抑制することができます。
(このシナリオは、コードと対応するリソースを削除しても、翻訳の削除を忘れる可能性がある文字列翻訳で頻繁に発生します。このシナリオには、ExtraTranslationというIDを持つ専用の課題IDがあります。)
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
tools:ignore="MissingDefaultResource" <!--this-->
Android:layout_width="match_parent"
Android:layout_height="match_parent">
しかし、これは簡単な解決策です。Androidのリソースが不足しているためです。
これをfile systemオプションで解決します。 Androidがリソースの欠落について通知する場合、何かが欠落していることを意味するため、それを補充する必要があります。
\ app\src\main\resに移動する必要があります
多分:ファイルのないフォルダーを右クリックし、Exporerに表示して、\ app\src\main\resに戻る
あなたは見つけるはずです
/layout
/layout-normal
/layout-large
/some more folders
ファイルがどこにないのかがわかるはずです。私の場合、それは/ layoutにありません
私の場合、Googleは異なるレイアウト間で異なる名前を期待していた(または少なくとも受け入れた)ようです。 time_dialog.xml
とtime_dialog_landscape.xml
がありました。後者の名前をtime_dialog.xml
に変更すると、問題が修正されました。
Gradleモジュール間でレイアウトファイルを移動すると、このエラーが発生しました。 Android Studioを再起動してプロジェクトをクリーンアップすると、キャッシュが無効になるまでキャッシュを無効にする必要はありませんでした。 IDEバグのようです。
私の場合、この問題は大文字が原因でした。 「-」などの間違った文字も問題の原因になります。名前をActivity_disease.xml
からactivity_disease.xml
に変更し、問題を修正しました。
私のために働いたのは、id属性を削除することです
Android:id="@+id/[id same as filename]"
レイアウトリソースから。
パーティーに遅れましたが、私の場合は上記とは異なります。
私はただリソースの名前を変更しましたと動作し始めました。
実際、私のリソース名はic_menu_black_24dp.xmlであったため、Androidのメニューリソースと競合していました。
私の場合、値名に「間違った」文字(ドット)が使用されているため、この警告が表示されました。
<dimen name="dp.divider.xlarge">24dp</dimen>
ドットを削除する(名前を右クリックし、Android StudioでRefactor-Renameする)ことで問題が解決しました。
この問題は、スタジオまたはコンパイラがベースレイアウトフォルダ内のリソースファイルを見つけることができないために発生しているようです。この問題を解決するには、ファイルを異なるレイアウトフォルダーに作成する必要がある場合があります。異なるターゲットデバイスのレイアウトを設計するためにレイアウトフォルダーv21、v25などのフォルダーを使用している場合は、リソースファイルもそこに配置する必要があります。
プロジェクトをgradleと同期するだけでこの問題を解決しました