Android ไม่แจ้งเตือน error แต่รันแล้วขึ้นหน้า popup ...has stopped unexpectedly. please try again
มันจะต้องดูที่ LogCat ครับ ว่าแต่ได้กำหนด Permission ของการเชื่อมต่อกับ Internet หรือยังครับ
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
Date :
2012-08-21 06:25:51
By :
mr.win
ได้กำหนด Permission ของการเชื่อมต่อกับ Internet เรียบร้อยแล้วค่ะ
ต้องแจ้งก่อนว่าเป็นโปรแกรมที่มี 2 ปุ่ม ปุ่มแรกกดแล้วแสดง map (ที่ดึงมาจาก google) พร้อมกับ pin อันนี้โปรแกรมไม่มีปัญหาค่ะ
ส่วนอีกปุ่มในโปรแกรมเดียวกัน เป็นการกดให้แสดง map (ที่ดึงมาจาก google) พร้อมเส้นทางการ route อันนี้มีปัญหาค่ะ
นี่เป็น log cat หลังจากการรัน
Code
08-21 08:12:53.254: D/Test Log(449): xxx Error
08-21 08:13:19.253: D/dalvikvm(449): GC_CONCURRENT freed 1141K, 53% free 3171K/6727K, external 1625K/2137K, paused 8ms+7ms
08-21 08:13:19.824: D/dalvikvm(449): GC_CONCURRENT freed 538K, 51% free 3330K/6727K, external 1625K/2137K, paused 6ms+10ms
08-21 08:13:20.393: D/dalvikvm(449): GC_CONCURRENT freed 836K, 54% free 3145K/6727K, external 1744K/2137K, paused 6ms+10ms
08-21 08:13:20.673: I/MapActivity(449): Handling network change notification:CONNECTED
08-21 08:13:20.673: E/MapActivity(449): Couldn't get connection factory client
08-21 08:13:20.893: D/dalvikvm(449): GC_EXTERNAL_ALLOC freed 27K, 53% free 3166K/6727K, external 1987K/2137K, paused 80ms
08-21 08:13:21.093: W/IInputConnectionWrapper(449): finishComposingText on inactive InputConnection
08-21 08:13:29.474: W/KeyCharacterMap(449): No keyboard for id 0
08-21 08:13:29.474: W/KeyCharacterMap(449): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
08-21 08:13:31.574: W/MapActivity(449): Recycling dispatcher android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher@405fc7d8
08-21 08:13:31.613: V/MapActivity(449): Recycling map object.
08-21 08:13:31.714: D/dalvikvm(449): GC_CONCURRENT freed 307K, 49% free 3473K/6727K, external 2243K/2801K, paused 12ms+8ms
08-21 08:13:32.104: I/CXRATE - ShowRouteAsyncTask(449): ROUTE URL:http://maps.google.com/maps?f=d&hl=en&saddr=7.896688,98.35188&daddr=10.390572,99.084778&ie=UTF8&0&om=0&output=kml
08-21 08:13:32.264: I/MapActivity(449): Handling network change notification:CONNECTED
08-21 08:13:32.264: E/MapActivity(449): Couldn't get connection factory client
08-21 08:13:35.073: W/System.err(449): org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:795 in java.io.InputStreamReader@406487b8)
08-21 08:13:35.083: W/System.err(449): at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:151)
08-21 08:13:35.083: W/System.err(449): at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
08-21 08:13:35.083: W/System.err(449): at com.hrupin.maproute.route.RoadProvider.getRoute(RoadProvider.java:20)
08-21 08:13:35.083: W/System.err(449): at com.hrupin.maproute.ShowRouteAsyncTask.doInBackground(ShowRouteAsyncTask.java:37)
08-21 08:13:35.094: W/System.err(449): at com.hrupin.maproute.ShowRouteAsyncTask.doInBackground(ShowRouteAsyncTask.java:1)
08-21 08:13:35.094: W/System.err(449): at android.os.AsyncTask$2.call(AsyncTask.java:185)
08-21 08:13:35.094: W/System.err(449): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
08-21 08:13:35.094: W/System.err(449): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
08-21 08:13:35.094: W/System.err(449): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
08-21 08:13:35.104: W/System.err(449): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
08-21 08:13:35.104: W/System.err(449): at java.lang.Thread.run(Thread.java:1019)
08-21 08:13:35.533: D/AndroidRuntime(449): Shutting down VM
08-21 08:13:35.533: W/dalvikvm(449): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-21 08:13:35.573: E/AndroidRuntime(449): FATAL EXCEPTION: main
08-21 08:13:35.573: E/AndroidRuntime(449): java.lang.NullPointerException
08-21 08:13:35.573: E/AndroidRuntime(449): at com.hrupin.maproute.route.RouteOverlay.drawPath(RouteOverlay.java:53)
08-21 08:13:35.573: E/AndroidRuntime(449): at com.hrupin.maproute.route.RouteOverlay.draw(RouteOverlay.java:43)
08-21 08:13:35.573: E/AndroidRuntime(449): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42)
08-21 08:13:35.573: E/AndroidRuntime(449): at com.google.android.maps.MapView.onDraw(MapView.java:530)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.View.draw(View.java:6880)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.View.draw(View.java:6883)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.widget.FrameLayout.draw(FrameLayout.java:357)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.View.draw(View.java:6883)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.widget.FrameLayout.draw(FrameLayout.java:357)
08-21 08:13:35.573: E/AndroidRuntime(449): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewRoot.draw(ViewRoot.java:1522)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.os.Handler.dispatchMessage(Handler.java:99)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.os.Looper.loop(Looper.java:130)
08-21 08:13:35.573: E/AndroidRuntime(449): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-21 08:13:35.573: E/AndroidRuntime(449): at java.lang.reflect.Method.invokeNative(Native Method)
08-21 08:13:35.573: E/AndroidRuntime(449): at java.lang.reflect.Method.invoke(Method.java:507)
08-21 08:13:35.573: E/AndroidRuntime(449): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-21 08:13:35.573: E/AndroidRuntime(449): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-21 08:13:35.573: E/AndroidRuntime(449): at dalvik.system.NativeStart.main(Native Method)
Date :
2012-08-21 08:25:37
By :
pangpmr
ผมสังเกตุว่ามันมี Error อยู่ 2 จุดน่ะครับ
Code
08-21 08:12:53.254: D/Test Log(449): xxx Error
08-21 08:13:19.253: D/dalvikvm(449): GC_CONCURRENT freed 1141K, 53% free 3171K/6727K, external 1625K/2137K, paused 8ms+7ms
08-21 08:13:19.824: D/dalvikvm(449): GC_CONCURRENT freed 538K, 51% free 3330K/6727K, external 1625K/2137K, paused 6ms+10ms
08-21 08:13:20.393: D/dalvikvm(449): GC_CONCURRENT freed 836K, 54% free 3145K/6727K, external 1744K/2137K, paused 6ms+10ms
08-21 08:13:20.673: I/MapActivity(449): Handling network change notification:CONNECTED
08-21 08:13:20.673: E/MapActivity(449): Couldn't get connection factory client
08-21 08:13:20.893: D/dalvikvm(449): GC_EXTERNAL_ALLOC freed 27K, 53% free 3166K/6727K, external 1987K/2137K, paused 80ms
08-21 08:13:21.093: W/IInputConnectionWrapper(449): finishComposingText on inactive InputConnection
08-21 08:13:29.474: W/KeyCharacterMap(449): No keyboard for id 0
08-21 08:13:29.474: W/KeyCharacterMap(449): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
08-21 08:13:31.574: W/MapActivity(449): Recycling dispatcher android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher@405fc7d8
08-21 08:13:31.613: V/MapActivity(449): Recycling map object.
08-21 08:13:31.714: D/dalvikvm(449): GC_CONCURRENT freed 307K, 49% free 3473K/6727K, external 2243K/2801K, paused 12ms+8ms
08-21 08:13:32.104: I/CXRATE - ShowRouteAsyncTask(449): ROUTE URL:http://maps.google.com/maps?f=d&hl=en&saddr=7.896688,98.35188&daddr=10.390572,99.084778&ie=UTF8&0&om=0&output=kml
08-21 08:13:32.264: I/MapActivity(449): Handling network change notification:CONNECTED
08-21 08:13:32.264: E/MapActivity(449): Couldn't get connection factory client
08-21 08:13:35.073: W/System.err(449): org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:795 in java.io.InputStreamReader@406487b8)
อาจจะต้องใช้การ Debug ดูครับ
Date :
2012-08-21 08:43:45
By :
mr.win
โปรเจคที่ 2 หา error เจอแล้วค่ะ ที่บรรทัด 72 ในไฟล์ .xml จริงๆด้วย
ขอบคุณค่ะ
ส่วนโปรเจคแรก
ขอรบกวนช่วยชี้แจงวิธีการอ่าน Debug หน่อยค่ะ
หนูกดคลิกขวา Debug แล้วก็กด F5, F5 หรือ F6
แต่ไม่ทราบว่าอ่านค่า เพื่อให้ทราบผลอย่างไร
รบกวนด้วยนะคะ
Date :
2012-08-21 13:32:36
By :
pangpmr
Date :
2012-08-21 15:54:00
By :
hotchoc
warning ตัวนี้ มันส่งผลกับที่แจ้ง error ไหมคะ
Date :
2012-08-21 16:07:45
By :
hotchoc
ไม่เกี่ยวครับ
Date :
2012-08-21 16:21:03
By :
mr.win
รบกวนช่วยดูให้หน่อยค่ะ
ตอนนี้คิดว่ามีปัญหาตรง mRoad เพราะ comment ไว้ แล้วสามารถรันได้
แต่ยังไม่ทราบปัญหาที่แท้จริง
Code (Java)
package com.hrupin.maproute;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.hrupin.maproute.route.Road;
import com.hrupin.maproute.route.RoadProvider;
import com.hrupin.maproute.route.RouteOverlay;
import android.app.ProgressDialog;
import android.os.AsyncTask;
public class ShowRouteAsyncTask extends AsyncTask<Object, Object, Boolean> {
private static final String TAG = ShowRouteAsyncTask.class.getSimpleName();
private Road mRoad;
private MapView mapView;
private ProgressDialog dialog;
public ShowRouteAsyncTask(MapView mapView) {
this.mapView = mapView;
}
@Override
protected Boolean doInBackground(Object... params) {
double fromLat = 7.896688, fromLon = 98.35188,
toLat = 10.390572, toLon = 99.084778;
String url = RoadProvider.getUrl(fromLat, fromLon, toLat, toLon);
Loger.i(TAG, "ROUTE URL:" + url);
InputStream is = getConnection(url);
mRoad = RoadProvider.getRoute(is);
return true;
}
@Override
protected void onPostExecute(Boolean isSuccess) {
if(dialog.isShowing()){
dialog.dismiss();
}
//RouteOverlay mapOverlay = new RouteOverlay(mRoad, mapView);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
//listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(mapView.getContext());
//dialog.setMessage("Wait while route builds");
if(!dialog.isShowing()){
dialog.show();
}
}
private InputStream getConnection(String url) {
InputStream is = null;
try {
URLConnection conn = new URL(url).openConnection();
is = conn.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return is;
}
}
Date :
2012-08-23 00:21:48
By :
hotchoc
คุณเอาตัวอย่างมาจากไหนครับ มันเคยรันได้หรือเปล่าครับ
Date :
2012-08-23 06:09:09
By :
mr.win
มันเป็นตัวอย่างโค้ด ที่เจอในเว็บค่ะ และเคยรันได้
Date :
2012-08-23 19:57:35
By :
hotchoc
Load balance : Server 00