私は自分の手を試していますAndroid Application Development。現在Eclipseを使用しています(最新のものは何でもバージョンを思い出せません)。 Google Maps V2 APIを使用しようとしていますが、いくつかのドキュメントを調べていくつかのテクニックを試しましたが、すべて同じエラーになります。
Android.view.Inflate Exception: Binary XML file line #2: Error inflating class fragment
私はここで間違っていることを把握しようとして、2日間まっすぐキーに顔を打ちつけてきました。
私がやったこと:
a library
。Android-support-v4.jar
私のプロジェクトの依存関係として。私は私の質問に似た質問から非常に多くの異なる回答を試みましたが、役に立ちませんでした。 :(私は通常、これらのことを理解することができますが、多分私はあまりにも過負荷です。
Eclipseの私のパッケージエクスプローラーツリーは次のようになります
コードは次のとおりです:>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/map"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
class="com.google.Android.gms.maps.SupportMapFragment"/>
マニフェスト
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.testing.svma"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="17"
Android:targetSdkVersion="17" />
<permission
Android:name="com.testing.svma.permission.MAPS_RECEIVE"
Android:protectionLevel="signature" />
<uses-permission Android:name="com.testing.svma.permission.MAPS_RECEIVE" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.testing.svma.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="SHA1_Generated_KEY_HERE" />
</application>
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
</manifest>
MainActivity.Java
package com.testing.svma;
import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
参考文書
Googleマップで「クラスフラグメントを膨らませるエラー」 を使用して、問題を解決しようとしました。
このGoogleマップのクイックスタートガイド を参照して、プロジェクトを作成しました。
たくさんのSO質問。
だから、SO Community、私は何を間違えているのでしょうか?なぜこの単純な概念を理解できないのですか?.
前もって感謝します。
同じコード/同じ問題があります! Android:name = "com.testing.svma.MainActivity"をレイアウトの "fragment"に追加してみてください!それは私のために問題を解決しました
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/map"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
class="com.google.Android.gms.maps.SupportMapFragment"
Android:name="com.testing.svma.MainActivity"/>
私はこれがおそらくデッドスレッドであることを知っていますが、万が一誰かがここで同じ問題に遭遇した場合に備えて-あなたのマニフェストには次のメタ情報が欠けているかもしれません:
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<application>
要素内で宣言すると、コードが機能するはずです。このステップをスキップしたyoutubeチュートリアルに従って同じ問題に遭遇しましたが、元のGoogleチュートリアルを注意深く調べたときにのみ、コードが欠落していることに気付きました。
とにかく、これが誰かを助けることを願っています。
私も同じ問題を抱えていたので、マニフェストを修正して解決しました。これは私のマニフェストです。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="example.gps"
Android:versionCode="1"
Android:versionName="1.0" >
<permission
Android:name="example.gps.permission.MAPS_RECEIVE"
Android:protectionLevel="signature"></permission>
<!-- Copied from Google Maps Library/AndroidManifest.xml. -->
<uses-sdk
Android:minSdkVersion="9"
Android:targetSdkVersion="17"/>
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission Android:name="Android.permission.INTERNET"/>
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
<!-- External storage for caching. -->
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- My Location -->
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"/>
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true"/>
<!-- End of copy. -->
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme"
Android:hardwareAccelerated="true" >
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="<YOUR VALUE>"/>
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<activity
Android:name="example.gps.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
そして、xmlファイルは
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/map"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
class="com.google.Android.gms.maps.SupportMapFragment"
/>
Javaクラスは
public class MainActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
それは私の問題を解決しました
プロジェクトにgoogle-play-servicesライブラリ参照を追加してみてください。 Eclipseを使用している場合は、Project->Properties->Android
およびAdd
google-play-servicesライブラリプロジェクトに移動する必要があります。
あるいは、
project.properties
ファイルを手動で変更できます。 google_play_servicesライブラリへの参照を追加してみてください。したがって、私のproject.properties
ファイルは次のようになります。
# Project target.
target=Android-17
Android.library.reference.1=../../../Android-sdks/extras/google/google_play_services/libproject/google-play-services_lib
あなたの場合、google-play-services libへのパスは異なる場合があります
コードをインポートしようとしましたが、同様にクラッシュしました。プロパティファイルを変更したとき-マップを実行しています
私はこの問題を解決するために多くの時間を費やし、多くの読書と試みの後、私は
public class MainActivity extends FragmentActivity
このため
public class MainActivity extends Android.support.v4.app.FragmentActivity
これがお役に立てば幸いです
多くの場合、問題はManifest.xml
にあるため、次のような適切な権限を記述してください。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.zako.Android.locationapi.maps"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="17"
Android:targetSdkVersion="17" />
<permission
Android:name="com.zako.Android.locationapi.maps.permission.MAPS_RECEIVE"
Android:protectionLevel="signature" />
<!-- Required OpenGL ES 2.0. for Maps V2 -->
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
<!-- Requires OpenGL ES version 2 -->
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="com.zako.Android.locationapi.maps.permission.MAPS_RECEIVE" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.zako.Android.locationapi.maps.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="......" />
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
</application>
</manifest>
`
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
と<meta-data Android:name="com.google.Android.gms.version" Android:value="@integer/google_play_services_version" />
を忘れないでください
数日間にわたって上記のすべての答えを試してみましたが、最終的にはこれが機能しました:
プロジェクト->プロパティ-> Android-> Project Build Target
プロジェクトのビルドターゲットをAndroid 4.3(API 18)に変更し、[適用]をクリックしました
マニフェストで、最小およびターゲットのSDKバージョンを手動で変更しました。
<uses-sdk
Android:minSdkVersion="18"
Android:targetSdkVersion="18" />
これは、project.propertiesファイルのtarget=Android-18
と一致します(最初に行ったプロジェクトビルドターゲットの変更の結果)
Android:minSdkVersion="11"
も試してみたので、targetSdkVersion
が重要なビットです。
これが誰かを助けることを願っています!
onDestroy()
に次のコード行を含めるだけです
SupportMapFragment mapFragment = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map_location_sharing));
if(mapFragment != null) {
FragmentManager fM = getFragmentManager();
fM.beginTransaction().remove(mapFragment).commit();
それは私にとってもうまくいきました。ありがとう
project->tools>add support library
...およびsetup library
を右クリックして解決した同様の問題があります
これがお役に立てば幸いです
一部のAndroid 6.0 mobileでは、この例外はバグです。XMLをフラット化できない場合は、
Caused by: Java.lang.NullPointerException: Attempt to invoke virtual method 'Android.content.res.Configuration Android.content.res.Resources.getConfiguration()' on a null object reference
次に、Android https://issuetracker.google.com/issues/35827842 のアクティブなバグです
これは追加することで解決できます
Android:hardwareAccelerated="true" adding in activity tag
私もこのエラーを経験しましたが、それは外部許可によるものでした。意味はありませんが、この許可を追加すると、それ以降はすべて正常に機能しました。
私は同様のエラーがあり、この点から来ていると思います:Google Play Service APIを含めると、ワークスペースにコピーせず、元のものを使用します!!!
注:ソースツリーにコピーしたライブラリのコピーを参照する必要があります。Android SDKディレクトリからライブラリを参照しないでください。
この点を確認してください。
私は同じ問題を抱えていて、次の2つのタグのうち1つだけを追加するというミスを犯しました。
APIレベルのUIの問題を考えているかもしれないので、実際のエラーは本当に紛らわしいです。
<meta-data Android:name="com.google.Android.maps.v2.API_KEY" Android:value="<YOUR VALUE>"/> <meta-data Android:name="com.google.Android.gms.version" Android:value="@integer/google_play_services_version" />
これら2つのうちの1つも欠落していることに注意してください
マニフェストにAPIキーを追加しただけで役に立ちました
私の場合、両方のメタデータ参照を使用して問題を解決していました。
<meta-data
Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<meta-data
Android:name="com.google.Android.maps.v2.API_KEY"
Android:value="yourAPIkeyFromGoogleAPIConsole" />