بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
اجرا نشدن نقشه گوگل
مدیریت گفتگو
آخرین تغییر: 9 سال پیش
من همه کارها رو طبق ویدیو میرم ولی وقتی Run میزنم این ارررو رو میده
FATAL EXCEPTION: main
Process: com.uncocoder.course.app.google_maps, PID: 1920
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.uncocoder.course.app.google_maps/com.uncocoder.course.app.google_maps.GoogleMapsActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.uncocoder.course.app.google_maps.GoogleMapsActivity.onCreate(GoogleMapsActivity.java:27)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
... 11 more
egl: current context mark for deletion
Starting window AppWindowToken{52a06730 token=Token{52ac46ec ActivityRecord{52933e70 u0 com.uncocoder.course.app.google_maps/.GoogleMapsActivity t3}}} timed out
این هم کد برنامه که خط 27 map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); هست
package com.uncocoder.course.app.google_maps;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class GoogleMapsActivity extends FragmentActivity {
private GoogleMap map;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
networkLocation();
}
private void animateToLocation(double latitude, double longtitude) {
LatLng latlng = new LatLng(latitude, longtitude);
CameraPosition position1 = CameraPosition.builder()
.target(latlng)
.zoom(15)
.build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(position1));
map.addMarker(new MarkerOptions()
.title("Test")
.position(latlng));
}
public void networkLocation() {
G.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
public void onLocationChanged(Location location) {
animateToLocation(location.getLatitude(), location.getLongitude());
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
});
}
}
این هم مانیفست
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.uncocoder.course.app.google_maps"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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" />
<uses-sdk android:minSdkVersion="7" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:name=".G"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".GoogleMapsActivity"
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.geo.AIzaSyAcKLCTjeTDMuCg6rH0GmIYryp4gMF3Ses"
android:value="AIzaSyAcKLCTjeTDMuCg6rH0GmIYryp4gMF3Ses" />
<meta-data
android:name="com.google.android.gms.version"
android:value="6" />
<!--
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyA5GtE6U6AhkKgmwXqzm3z8FcCB-mLfhVQ" />
-->
</application>
</manifest>
این هم Main.xml
<?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" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
این هم کلاس G
package com.uncocoder.course.app.google_maps;
import android.app.Application;
import android.content.Context;
import android.location.LocationManager;
public class G extends Application {
public static LocationManager locationManager;
@Override
public void onCreate() {
super.onCreate();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}
}
این هم سایر موارد
پاسخها 2
از این کد ها که توی مستندات گوگل آمده استفاده کن
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Sydney and move the camera
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
اینم مانیفست
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.exmaple" >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
فقط گوگل key هم جایگزین کن
نظرات
فقط یک سوال من توی تگ frafmet توی main.xml xmlns:android= لینک رو میذاشتم ازم اررور میگرفت ولی برداشتم ارورو رو نمیگرفت وحالت nullpoitntexstion میگیره نمیدونم از این باشه یا نه
این کدی که گذاشتید مربوط به چه ورژنی هست OnMapReadyCallback و import com.google.android.gms.location.LocationListener;
import com.google.android.gms.maps.OnMapReadyCallback; رو نمیشناسه
درست نشد
این جدیترین نسخه باید باشه چون توی سایت خود گوگل بود
شما اگه از آندروید استادیو استفاده میکردید این مشکلات رو دیگه نداشتید
فعلا با Eclipce میسازیم تا با آموزش های جدید یواش یواش به سمت اندروید استادیو بریم
توی یک پروژه خالی اجرا کردم ارور زیر رو میده
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.maps.SupportMapFragment" on path: DexPathList[[zip file "/data/app/com.exam.google-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.exam.google-2, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Fragment.instantiate(Fragment.java:583)
در صورتی که توی پروژه قبلی این ارور رو نمیداد همچنین 
بعداز Run زدن علامتش ضربدر میشه
این ضربدر دلیلش مشخص شد من چون از نسخه آقای نورحسینی استفاده میکنم و ایشون eclipce رو طوری تنظیم کردن که پروژه ها توی مسیر
C:\dev\ADT 23.0.6 AllinOne\Projects\
ایجاد میشوند و لایبری که ایپروت میکردم توی یه مسیر دیگه ای از هاردم بود ضربدر به وجود می اومد
لایبری رو توی همون مسیر ایجاد و ایمپورت کردم دیگه ضربدر نمیشه
نظرات
توی Stackoverflow نوشته که این مشکل که لایبرری ضربدر میخوره برای اینه که لایبرری رو به Work Space اضافه نکردید. پروژه رو توی Work Space کپی کنید و بعد توی اکلیپس ایمپورتش کنید.
پروژه توی Work Space هست
اینکه استاد میگه از برای ایجاد پروژه از نسخه گوگل ای پی آی استفاده میکنیم نه اندروید خب وقتی ما یه یک پروژه ای را که با اندروید ایجاد کردیم و کلی براش وقت صرف کردیم و به مراحل پایانی رسوندیم چطور باید از گوگل مپ توی پروژه مون استفاده کنیم
اگر با اندروید استادیو کار کنی مشکلت حل میشه .
دوستان یه سوال خیلی ساده دارم بهم نخندین جواب بدین . من googlmap را درست کردم منتها روی امولاتور بهم میگه google play srrvice آپدیت کن . چطور روی امولاتور آپذیتش کنم ؟ این مشکلم حل بشه مراحل آموزششو میذارم
یکی از روش ها برای آپدیت GooglePlayeService میتونید فایل APK رو از روی گوشیتون که آپدیت هست رو انتقال بدید و استفاده کنید ، این نمونه سورس GoogleMap هست همراه با لایبری مورد نیاز s9.picofile.com/file/8272342668/GoogleMap.rar.html
سلام ممنون ولی من به سورس احتیاج ندارم چون کدای خودم کاملتره . google play service هم v23 هست ولی نمیدونم از کجا و چطوری آپدیت کنم . فقط این مشکلا دارم . خیلی مسخرس میدونم ولی این مشکلمه دیگه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام

نظرات