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

مشکل در Google Map (فرگمنتش)

مدیریت گفتگو
احسان منصوری 11 سال پیش
آخرین تغییر: 11 سال پیش

دوستان اگه دقت کرده باشید، توی آموزش Google Map، وقتی که آقای آقاجانی پروژه رو برای اولین بار اجرا می کنه، Force Close میده که مشکل از فرگمنت هست و خودشون هم توضیح میدن که ممکنه مشکل از تعریف نشدن فرکمنت توی این ورژن باشه. ولی یهو فیلم قطع میشه و برنامه که دوباره اجرا میشه، خطا نمیگیره و مشکلی نداره و توضیحی نمیدن که اون خطا چجوری حل شد.  حالا من توی اون قسمت مشکل دارم و اون فیلم دیگه جوابگو نیست:(

مشکلم هم دقیقا از فرگمنته. 

اینم لوگ:

نظرات

Mseif 11 سال پیش
منم همین مشکل رو دارم
احسان منصوری 11 سال پیش
خب این مشکل اصلا چی هست؟ من هم توی اندروید استودیو و هم تو اکلیپس تست کردم خطاهای مشابه میده.
احسان منصوری 11 سال پیش
دوستان یعنی هیچکدومتون این مشکل براش پیش نیومده؟ اگه گیر نبودم این همه اصرار نمیکردم
MeY3am 11 سال پیش
خب احسان جان این خطای RunTime هستش و همینطور که خودتم گفتی مربوط به کلاس فرگمنت هست و مربوط به خط 13 فایل xml
Spirit 11 سال پیش
خطا رو جستجو کردید؟ تو stack چند تا راه حل نوشته بودن.
Mseif 11 سال پیش
@MeY3am جان می دونیم خطا از چیه ولی نحوه رفع این مشکل رو نمی دونیم
احسان منصوری 11 سال پیش
آره خطا رو جستجو کردم Spirit جان. متاسفانه چندین دلیل داره و هیچ دلیل منطقی برای این خطا نیست. مراحل راه اندازیش هم چیز خاصی نداره که مثلا اشتباهی توش باشه. ببینید، درسته خطا از XML فرگمنت هست ولی خطا از نحوه extends شدن اکتیویتی اونه که من از FragmentActivity اومدم extendsش کردم و حل شد. ولی همونطور که گفتم، ممکنه دلایل دیگه و بی ربط دیگه داشته باشه. ولی الان یه صفحه خالی و بدون نقشه بالا میاد. مثل تصویر زیر.

پاسخ‌ها 2

احسان منصوری 11 سال پیش

این صفحه خالی رو نشون میده. روی گوشی هم تست میکنم بازم همینه.

API Key رو هم چند بار تغییر دادم ولی فایده ای نداشت. لوگ رو که بررسی میکنم، میگه خطا در برقراری ارتباط با سرور گوگل. با چیزشکن:) هم تست میکنم بازم فایده نداره

اینم از لوگش:

البته خطاهاش دو قسمت بود که تو عکس توضیح دادم

 

نظرات

کاشی زاده 11 سال پیش

من خیلی خاطر نیست آموزش هارو ولی شما باید برای استفاده از گوگل مپ یک فرگمنت قرار بدید که داخلش خاصیت name رو براش

com.google.android.gms.maps.SupportMapFragment در نظر بگیری مثل کد xml زیر :

   <fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

در کلاس مربوطه هم باید برای دسترسی به نقشه به اینصورت کد بزنید :

 SupportMapFragment frag =  (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
GoogleMap map = frag.getMap();

توجه داشته باشید برای استفاده از مپ یکسری پرمیشن ها رو هم باید به برنامه بدید :

    <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_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

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

و همینطور باید کلید دریافتی از گوگل بهمراه ورژن گوگل پلی سرویس  رو توی منی فست وارد کنید .

   <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="XXXxxxxXXXXxxxXXXXxxxXXX" />

با این روش شما میتونید به راحتی از مپتون استفاده کنید و اگر کلید صحیح رو داده باشید نباید مشکلی باشه .

تنها نکته ای که میمونه این هست که شما  کلیدی که برای دیباگ استفاده میکنید با کلید مربوط به نسخه  ریلیز شده متفاوت هست .

 

موفق باشید :)

 

 

نظرات

احسان منصوری 11 سال پیش
جان؟ کلی دیباگ با کلید ریلیز شده متفاوته؟ این کلید نسخه ریلیز شده رو از کجا بیارم؟ من که همش دارم از کلید دیباگ استفاده میکنم:(
کاشی زاده 11 سال پیش
کلید دیباگ کلیدی هست که برای تست برنامه استفاده میشه و شما روی ایمولیتر استفاده کنید ولی کلید رلیز کلیدی هست که شما موقع خروجی گرفتن از برنامه بهش میدیدهمون signKey که با پلاگین keyTools میسازید .
کاشی زاده 11 سال پیش
فرقی نمیکنه بالاخره شما کلیدی که الان داری استفاده میکنی کلید دیباگ هست برای ساخت و اگر برنامه رو در گوشی بخواین تست بگیرید مشکل پیدا میکنید ولی در ایمولیتر نباید مشکلی داشته باشید . به هر حال برای دریافت کلید ریلیز برنامه میتونید از این روش هم استفاده کنید لینک
احسان منصوری 11 سال پیش
واقعا ممنونم محمدحسین عزیز. حل شد. مشکل از همون keystore بود.

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