android.view.inflateexception バイナリ xml ファイル行例外の解決方法
非常にシンプルなxmlレイアウトファイルが実行され、以下のような例外を投げることがあります。
<スパン
07-25 10:40:50.966: D/AndroidRuntime(31570): VMのシャットダウン
07-25 10:40:50.966: W/dalvikvm(31570): threadid=1: スレッドがキャッチされない例外で終了しました (group=0x42441700)
07-25 10:40:50.976: E/AndroidRuntime(31570): FATAL EXCEPTION: メイン
07-25 10:40:50.976: E/AndroidRuntime(31570): java.lang.RuntimeException: アクティビティを開始できません ComponentInfo{com.example.moveball/com. MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class com.example.moveball.
07-25 10:40:50.976: E/AndroidRuntime(31570):
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
07-25 10:40:50.976: E/AndroidRuntime(31570):
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
07-25 10:40:50.976: E/AndroidRuntime(31570):
at android.app.ActivityThread.access$700(ActivityThread.java:168)
07-25 10:40:50.976: E/AndroidRuntime(31570):
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
この例外は、一般に、対応するxmlのタグと属性の命名と定義に関連するものである。
非常に小さなエラーがこのような問題を引き起こすことがあります。このような小さなエラーは一般的にチェックが難しいので、コードを書くときに注意しておくと、後でチェックするときに困らないでしょう。
例えば、コントロールのEditTextがTextViewとして書かれているなど、細かい問題です
別の例として リソースファイルが見つかりません。
<スパン <スパン 補足:Androidのリソースフォルダとリソースファイルの詳細については、私の他の記事を参照してください。
一般的に res/ 以下にあるリソースファイルを見て、例えば drawable-mdpi/ ディレクトリにあるリソースファイルをすべてコピーし、drawable-mdpi/ ディレクトリにコピーし、それでもエラーが報告され、別のコピーを drawable-hdpi/ ディレクトリにコピーし、問題は解決しました。
<スパン 常に 探している場所のリソースファイルが存在しない疑いがあります。
一般的には、res/ の下に drawable/ というディレクトリを作り、drawable-mdpi/ 以下のリソースファイルを全て drawable/ にコピーします。
これらは類似の、そして他のリソースファイルのエラーに注意する必要があります。
xmlファイルがしばしば犯しがちな低レベルの間違いをまとめると。
<スパン 1. コントロール名を間違えて書いてはいけない
2. 名前は大文字と小文字を区別する必要があります、例えば EditText と editText は全く同じではありません
3. 特にネストされたレイアウトでは、タグはペアで表示されなければならない
4. 属性は一般的にアンドロイドを先行させるべきである。
5. id は特別で、@+id とする必要があり、他は @string のように直接 @ を付けることができる
6. drawable で参照される画像リソースが存在しないか、間違ったケースを持っている。
さらに、この例外は、プロパティを持つコンストラクタを追加する必要があるカスタム View クラスに関連する可能性もあります。
<スパン
<スパン
例外が発生したときの main.xml のカスタム View クラスに関連するコードは次のとおりです。
<スパン <スパン activity_main.xml を参照してください。
<スパン <スパン <スパン
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"? >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<com.example.moveball.DrawView
android:id="@+id/drawView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.example.moveball.DrawView>
</RelativeLayout></span>
<スパン
<スパン
Viewを継承したクラスのカスタムViewです。
<スパン <スパン <スパン <スパン
<span style="font-size:14px;">public class DrawView extends View{
private float circleX = 40;
private float circleY = 50;
private float circleR = 15;
// Construct method
public DrawView(Context context){
super(context);
}
// override ondraw method The following code is omitted... </span>
<スパン
<スパン
<スパン
<スパン
<スパン
<スパン
この例外については、次のように修正します。View クラスに別のコンストラクタを追加して、修正します!
<スパン <スパン <スパン <スパン
<span style="font-size:14px;">public class DrawView extends View{
private float circleX = 40;
private float circleY = 50;
private float circleR = 15;
// Construct method
public DrawView(Context context,AttributeSet attrs){
super(context,attrs);
}</span>
<スパン いずれにせよ、この例外が発生する理由は、実装しなければならないコンストラクタが実装されていないことかもしれません。
<スパン
<スパン
3つのコンストラクタを実装する必要があります
public GalleryFlow(Context コンテキスト) {...
<未定義
super(context)です。
}
public GalleryFlow(Context context, AttributeSet attrs) {...
<未定義
super(context、attrs)を使用します。
}
public GalleryFlow(Context context, AttributeSet attrs, int defStyle) {...
<未定義
super(context, attrs, defStyle)を使用します。
}
<スパン
<スパン
<スパン
関連
-
AndroidStudioのエラーAAPT2エラーの解決:詳細のログを確認する
-
android:ems="10 "とは何ですか?
-
GPSプロンプトの問題は、Callがユーザーによって拒否される可能性のある許可を必要とすることです:コードは、明示的にsをチェックする必要があります。
-
Androidでコンストラクタのインテントを解決できない原因と解決策
-
ERROR: x86 エミュレーションには現在ハードウェアアクセラレーションが必要です。
-
Error:Execution failed for task ':app:compileDebugJavaWithJavac' 根本的な解決方法
-
Manifest merger failed : Android 12以降をターゲットとするアプリは、明示的な指定が必要です。
-
Intellij Ideaは、シンボルが見つからない、RクラスまたはRパッケージが存在しない、というエラーを報告します。
-
Android Studioの開発環境構築とAndroid Studioエミュレータの作成
-
Android - Androidに多階層メニュー連携操作を実装。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Error:タスク ':app:compileDebugJavaWithJavac' の実行に失敗しました。解決方法
-
AndroidでFragmentを使用すると、Fragmentの内部コントロールを取得できず、findViewById()の結果がNullになる - 解決済み
-
エラーの報告です。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Androidにおけるメッセージの仕組みの分析 - 解決策。ビュー階層を作成した元のスレッドだけが、そのビューに触れることができる。
-
アンドロイドバージョン一覧
-
Androidです。ListView.addHeaderView()の使用方法と注意点
-
Android ListViewでaddHeaderを使用する
-
Android Studioの設定 Gradleの概要
-
no target device found 問題が解決した
-
Android デフォルトのホームアプリケーション(Launcher)起動プロセスのソースコード解析