마스터Q&A
접속유지
가입하기
안드로이드 Q&A
최근 질문
미답변 질문
태그
사용자
질문하기
마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다.
안드로이드펍
에서 운영하고 있습니다. [
사용법
,
운영진
]
인기있는 태그
초보어플개발
(3427)
안드로이드스튜디오
(2664)
안드로이드-초보어플개발
(1333)
안드로이드-스튜디오
(1086)
도와주세요-
(995)
이미지
(970)
listview
(866)
리스트뷰
(844)
오류
(805)
레이아웃
(693)
fragment
(675)
webview
(670)
구글맵을 띄우려고 하는데 오류가 나요ㅠㅠㅠ
0
추천
구글맵을 띄우려고 가져온 코든데 이 프로젝트 뿐만아니라 다른거에서도 같은오류가 나요 어떤게 문제일까요 로그캣 오류내용이에요
안드로이드
googlemap
굶
(
120
포인트)
님이
2020년 6월 9일
질문
로그캣 내용입니다
06-09 13:14:48.841 26556-26556/? E/Zygote: v2
06-09 13:14:48.841 26556-26556/? E/Zygote: accessInfo : 0
06-09 13:14:49.451 26556-26556/com.example.googleapi12 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.googleapi12, PID: 26556
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.googleapi12/com.example.googleapi12.MainActivity}: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7406)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.view.InflateException: Binary XML file line #12: Binary XML file line #12: Error inflating class fragment
at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:487)
at android.app.Activity.setContentView(Activity.java:2400)
at com.example.googleapi12.MainActivity.onCreate(MainActivity.java:45)
at android.app.Activity.performCreate(Activity.java:6904)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7406)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:855)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at android.view.LayoutInflater.inflate(LayoutInflater.java:380)
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:487)
at android.app.Activity.setContentView(Activity.java:2400)
at com.example.googleapi12.MainActivity.onCreate(MainActivity.java:45)
at android.app.Activity.performCreate(Activity.java:6904)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7406)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
at com.google.maps.api.android.lib6.drd.p.b(:com.google.android.gms.dynamite_mapsdynamite@201875051@20.18.75 (040408-0):6)
at com.google.maps.api.android.lib6.auth.f.a(:com.google.android.gms.dynamite_mapsdynamite@201875051@20.18.75 (040408-0):1)
at com.google.android.gms.maps.internal.CreatorImpl.a(:com.google.android.gms.dynamite_mapsdynamite@201875051@20.18.75 (040408-0):20)
at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms.dynamite_mapsdynamite@201875051@20.18.75 (040408-0):2)
at com.google.android.gms.maps.internal.g.a(:com.google.android.gms.dynamite_mapsdynamite@201875051@20.18.75 (040408-0):22)
at cy.onTransact(:com.google.android.gms.dynamite_mapsdynamite@201875051@20.18.75 (040408-0):4)
at android.os.Binder.transact(Binder.java:387)
at com.google.android.gms.internal.maps.zza.zza(Unknown Source)
at com.google.android.gms.maps.internal.zzf.zzc(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zzb.zzd(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$zzb.createDelegate(Unknown Source)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(Unknown Source)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.onInflate(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
at androidx.fragment.app.Fragment.onInflate(Fragment.java:1488)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3204)
at an
06-09 13:14:49.521 26556-26556/? I/Process: Sending signal. PID: 26556 SIG: 9
manifest입니다
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="
http://schemas.android.com/apk/res/android"
package="com.example.googleapi12">
<!-- Google Map -->
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="AIzaSyC0yuwqnRrnmPqufEvKkarxGfPuEarVnyU" />
...
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
.java 입니다
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
//GoogleMap 객체
GoogleMap googleMap;
MapFragment mapFragment;
LocationManager locationManager;
RelativeLayout boxMap;
//나의 위도 경도 고도
double mLatitude; //위도
double mLongitude; //경도
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
boxMap = (RelativeLayout)findViewById(R.id.boxMap);
//LocationManager
locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
//GPS가 켜져있는지 체크
if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
//GPS 설정화면으로 이동
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
startActivity(intent);
finish();
}
//마시멜로 이상이면 권한 요청하기
if(Build.VERSION.SDK_INT >= 23){
//권한이 없는 경우
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION , Manifest.permission.ACCESS_FINE_LOCATION} , 1);
}
//권한이 있는 경우
else{
requestMyLocation();
}
}
//마시멜로 아래
else{
requestMyLocation();
}
}
//권한 요청후 응답 콜백
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//ACCESS_COARSE_LOCATION 권한
if(requestCode==1){
//권한받음
if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
requestMyLocation();
}
//권한못받음
else{
Toast.makeText(this, "권한없음", Toast.LENGTH_SHORT).show();
finish();
}
}
}
//나의 위치 요청
public void requestMyLocation(){
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
return;
}
//요청
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 10, locationListener);
}
//위치정보 구하기 리스너
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){
return;
}
//나의 위치를 한번만 가져오기 위해
locationManager.removeUpdates(locationListener);
//위도 경도
mLatitude = location.getLatitude(); //위도
mLongitude = location.getLongitude(); //경도
//맵생성
SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
//콜백클래스 설정
mapFragment.getMapAsync(MainActivity.this);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) { Log.d("gps", "onStatusChanged"); }
@Override
public void onProviderEnabled(String provider) { }
@Override
public void onProviderDisabled(String provider) { }
};
//구글맵 생성 콜백
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
//지도타입 - 일반
this.googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
//나의 위치 설정
LatLng position = new LatLng(mLatitude , mLongitude);
//화면중앙의 위치와 카메라 줌비율
this.googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(position, 15));
//지도 보여주기
boxMap.setVisibility(View.VISIBLE);
}
}
xml입니다
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
xmlns:app="
http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/boxMap"
android:visibility="invisible"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>
</LinearLayout>
Please
log in
or
register
to add a comment.
답변 달기
·
글에 소스 코드 보기 좋게 넣는 법
·
질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
답변이 채택되거나 답변에 댓글이 달리면 이메일로 알려드립니다:
답변이 채택되거나 댓글이 달리면 이메일로 알려드립니다
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면
로그인
하거나 혹은
가입
하세요.
...