بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

اجرا نشدن نقشه گوگل

مدیریت گفتگو
rad 10 سال پیش
آخرین تغییر: 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);
}
}

این هم سایر موارد

نظرات

Criss 10 سال پیش
خط 27 مربوط به onCreate شما احتمالا از SetcontentView هست اگر همین هست که توی لایه XML ها Fragment رو نمیشناسه ، اگر دقیقا همین مورد هست از این تاپیک فایل های داده شده رو دانلود کنید : لینک و در مسیر D:\dev\sdk\extras\google\google_play_services\libproject\google-play-services_lib فایل های پروژه رو جایگزین کنید
rad 10 سال پیش
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE); اینه
rad 10 سال پیش
یک راهنمایی بفرمایید
Criss 10 سال پیش
کد های Manifest شما در قسمت meta-data اشتباه هست ، شما باید در طری مراحلی که برنامه رو دارید پیش میبردید اون رو تست میکردید ، اینطور که مشخصه شما پروژه آوردید تا انتها بعدا تست کردید ! چون حداقل این پروژه باید بصورت خالی توی فرگمنت نقشه رو نشون بده بدون هیچ کدی ، پروژه رو به مراحل قبل بر گردونید که بشه فهمید خطا از کجاست ، مثلا ممکنه حتی اگر خط 27 رو پاک هم کنید باز پروژه شما کرش داشته باشه
rad 10 سال پیش
من سورس خود آموزشی رو اجرا کردم
Criss 10 سال پیش
سورس این پروژه قابل اجرا نیست ، مگر اینکه در فولدر bin فایل apk وجود داشته باشه و اون رو تست کنید ! یکی از دلایل قابل اجرا نبودن پروژه همونطور که در آموزش توضیح داده شده ، متفاوت بودن کلیدها تولیدی هست
rad 10 سال پیش
خب من که از گوگل یک کلید گرفتم :(
rad 9 سال پیش
اون لینک ها رو دانلود کردم و اضافه کردم صفحه مربوط به google play service میاد که میگه باید آپدیت کنی ولی وقتی دکمه ش رو میزنم ارور میده و از برنامه خارج میشه و توی لوگ هم مینویسه Activity not found

پاسخ‌ها 2

یاسر  10 سال پیش

از این کد ها که توی مستندات گوگل آمده استفاده کن

 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 هم جایگزین کن

نظرات

rad 10 سال پیش
فقط یک سوال من توی تگ frafmet توی main.xml xmlns:android= لینک رو میذاشتم ازم اررور میگرفت ولی برداشتم ارورو رو نمیگرفت وحالت nullpoitntexstion میگیره نمیدونم از این باشه یا نه
rad 10 سال پیش
این کدی که گذاشتید مربوط به چه ورژنی هست OnMapReadyCallback و import com.google.android.gms.location.LocationListener; import com.google.android.gms.maps.OnMapReadyCallback; رو نمیشناسه
rad 10 سال پیش
درست نشد
یاسر  10 سال پیش
این جدیترین نسخه باید باشه چون توی سایت خود گوگل بود شما اگه از آندروید استادیو استفاده میکردید این مشکلات رو دیگه نداشتید
rad 10 سال پیش
فعلا با Eclipce میسازیم تا با آموزش های جدید یواش یواش به سمت اندروید استادیو بریم
rad 10 سال پیش

توی یک پروژه خالی اجرا کردم ارور زیر رو میده

  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\

ایجاد میشوند و لایبری که ایپروت میکردم توی یه مسیر دیگه ای از هاردم بود ضربدر به وجود می اومد

لایبری رو توی همون مسیر ایجاد و ایمپورت کردم دیگه ضربدر نمیشه

نظرات

Amir 10 سال پیش
توی Stackoverflow نوشته که این مشکل که لایبرری ضربدر میخوره برای اینه که لایبرری رو به Work Space اضافه نکردید. پروژه رو توی Work Space کپی کنید و بعد توی اکلیپس ایمپورتش کنید.
rad 10 سال پیش
پروژه توی Work Space هست
rad 9 سال پیش
اینکه استاد میگه از برای ایجاد پروژه از نسخه گوگل ای پی آی استفاده میکنیم نه اندروید خب وقتی ما یه یک پروژه ای را که با اندروید ایجاد کردیم و کلی براش وقت صرف کردیم و به مراحل پایانی رسوندیم چطور باید از گوگل مپ توی پروژه مون استفاده کنیم
afr_msb 9 سال پیش
اگر با اندروید استادیو کار کنی مشکلت حل میشه .
afr_msb 9 سال پیش
دوستان یه سوال خیلی ساده دارم بهم نخندین جواب بدین . من googlmap را درست کردم منتها روی امولاتور بهم میگه google play srrvice آپدیت کن . چطور روی امولاتور آپذیتش کنم ؟ این مشکلم حل بشه مراحل آموزششو میذارم
Criss 9 سال پیش
یکی از روش ها برای آپدیت GooglePlayeService میتونید فایل APK رو از روی گوشیتون که آپدیت هست رو انتقال بدید و استفاده کنید ، این نمونه سورس GoogleMap هست همراه با لایبری مورد نیاز s9.picofile.com/file/8272342668/GoogleMap.rar.html
afr_msb 9 سال پیش
سلام ممنون ولی من به سورس احتیاج ندارم چون کدای خودم کاملتره . google play service هم v23 هست ولی نمیدونم از کجا و چطوری آپدیت کنم . فقط این مشکلا دارم . خیلی مسخرس میدونم ولی این مشکلمه دیگه

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .