Java Android自定义对话框意味着强制关闭

Java Android自定义对话框意味着强制关闭,java,android,android-layout,android-dialog,Java,Android,Android Layout,Android Dialog,我在我的代码上调用一个对话函数,但每次我测试它时,它都会使一个力关闭。。。 这是我的密码: public void onLongPressFinished(MotionEvent arg0, ManagedOverlay arg1, GeoPoint arg2, ManagedOverlayItem item) { if (item!= null) // if the user longpresses a marker, it w

我在我的代码上调用一个对话函数,但每次我测试它时,它都会使一个力关闭。。。 这是我的密码:

   public void onLongPressFinished(MotionEvent arg0,
                ManagedOverlay arg1, GeoPoint arg2, ManagedOverlayItem item) {


            if (item!= null) // if the user longpresses a marker, it will pop up the route dialog
            {

                RouteDialog dialog = new RouteDialog();
                dialog.showCustomDialog();


            }
以及我用来实现该对话框的类:

package com.BuStopTracker;

import android.app.Activity;
import android.app.Dialog;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class RouteDialog extends Activity{



        public void showCustomDialog(){

            final Dialog dialog = new Dialog(this);

            dialog.setContentView(R.layout.routetodialog);//loads layout from xml file
            dialog.setTitle("Título do custom dialog");

            final Button ok = (Button) dialog.findViewById(R.id.bt_ok);
            final Button cancelar = (Button) dialog.findViewById(R.id.bt_cancel);
            final EditText editText = (EditText) dialog.findViewById(R.id.inputText);

            ok.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    //OK button action

                }
            });

            cancelar.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {


                    dialog.dismiss();

                }
            });

        dialog.show();

        }



}
我知道我的“LongPress检测器”功能正在工作,因为我用烤面包片测试了它,它工作得很好

有人能帮我吗?我很确定我的错误是我调用对话框的方式,我只是不明白为什么或者在哪里

谢谢

PS:根据要求,这是日志:

11-13 20:13:54.789: D/dalvikvm(406): GC_CONCURRENT freed 1153K, 54% free 3159K/6727K, external 2002K/2137K, paused 4ms+4ms
11-13 20:13:55.109: D/dalvikvm(406): GC_CONCURRENT freed 616K, 51% free 3363K/6727K, external 2002K/2137K, paused 5ms+7ms
11-13 20:13:55.369: D/dalvikvm(406): GC_EXTERNAL_ALLOC freed 721K, 54% free 3116K/6727K, external 2121K/2137K, paused 52ms
11-13 20:13:55.829: I/MapActivity(406): Handling network change notification:CONNECTED
11-13 20:13:55.829: E/MapActivity(406): Couldn't get connection factory client
11-13 20:13:55.979: D/dalvikvm(406): GC_EXTERNAL_ALLOC freed 215K, 56% free 3020K/6727K, external 2440K/2692K, paused 77ms
11-13 20:14:17.679: D/AndroidRuntime(406): Shutting down VM
11-13 20:14:17.679: W/dalvikvm(406): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-13 20:14:17.719: E/AndroidRuntime(406): FATAL EXCEPTION: main
11-13 20:14:17.719: E/AndroidRuntime(406): java.lang.IllegalStateException: System services not available to Activities before onCreate()
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.app.Activity.getSystemService(Activity.java:3536)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.app.Dialog.<init>(Dialog.java:141)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.app.Dialog.<init>(Dialog.java:123)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.BuStopTracker.RouteDialog.showCustomDialog(RouteDialog.java:23)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.BuStopTracker.BusTrackerBetaActivity$7.onLongPressFinished(BusTrackerBetaActivity.java:278)
11-13 20:14:17.719: E/AndroidRuntime(406):  at de.android1.overlaymanager.ManagedOverlayGestureDetector.invokeLongPressFinished(ManagedOverlayGestureDetector.java:76)
11-13 20:14:17.719: E/AndroidRuntime(406):  at de.android1.overlaymanager.ManagedOverlay.draw(ManagedOverlay.java:79)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.google.android.maps.Overlay.draw(Overlay.java:179)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.google.android.maps.MapView.onDraw(MapView.java:530)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.View.draw(View.java:6880)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.View.draw(View.java:6883)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.widget.FrameLayout.draw(FrameLayout.java:357)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.View.draw(View.java:6883)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.widget.FrameLayout.draw(FrameLayout.java:357)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewRoot.draw(ViewRoot.java:1522)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.os.Looper.loop(Looper.java:130)
11-13 20:14:17.719: E/AndroidRuntime(406):  at android.app.ActivityThread.main(ActivityThread.java:3683)
11-13 20:14:17.719: E/AndroidRuntime(406):  at java.lang.reflect.Method.invokeNative(Native Method)
11-13 20:14:17.719: E/AndroidRuntime(406):  at java.lang.reflect.Method.invoke(Method.java:507)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-13 20:14:17.719: E/AndroidRuntime(406):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-13 20:14:17.719: E/AndroidRuntime(406):  at dalvik.system.NativeStart.main(Native Method)
11-13 20:14:20.059: I/Process(406): Sending signal. PID: 406 SIG: 9
11-13 20:13:54.789:D/dalvikvm(406):GC_并发释放1153K,54%释放3159K/6727K,外部2002K/2137K,暂停4ms+4ms
11-13 20:13:55.109:D/dalvikvm(406):GC_并发释放616K,51%释放3363K/6727K,外部2002K/2137K,暂停5ms+7ms
11-13 20:13:55.369:D/dalvikvm(406):GC_外部分配释放721K,54%自由3116K/6727K,外部2121K/2137K,暂停52ms
11-13 20:13:55.829:I/MapActivity(406):处理网络更改通知:已连接
11-13 20:13:55.829:E/MapActivity(406):无法获取连接工厂客户端
11-13 20:13:55.979:D/dalvikvm(406):外部释放215K,56%释放3020K/6727K,外部2440K/2692K,暂停77ms
11-13 20:14:17.679:D/AndroidRuntime(406):关闭虚拟机
11-13 20:14:17.679:W/dalvikvm(406):threadid=1:线程以未捕获异常退出(组=0x40015560)
11-13 20:14:17.719:E/AndroidRuntime(406):致命异常:main
11-13 20:14:17.719:E/AndroidRuntime(406):java.lang.IllegalStateException:onCreate()之前的活动无法使用系统服务
11-13 20:14:17.719:E/AndroidRuntime(406):在android.app.Activity.getSystemService(Activity.java:3536)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.app.Dialog.(Dialog.java:141)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.app.Dialog.(Dialog.java:123)
11-13 20:14:17.719:E/AndroidRuntime(406):在com.BuStopTracker.RouteDialog.showCustomDialog(RouteDialog.java:23)
11-13 20:14:17.719:E/AndroidRuntime(406):在com.BuStopTracker.bustrackberBetavity$7.onLongPressFinished(bustrackberBetavity.java:278)
11-13 20:14:17.719:E/AndroidRuntime(406):在de.android1.OverlyManager.ManagedVerlayGestureDetector.invokeLongPressFinished(ManagedVerlayGestureDetector.java:76)
11-13 20:14:17.719:E/AndroidRuntime(406):在de.android1.overlymanager.ManagedOverlay.draw(ManagedOverlay.java:79)
11-13 20:14:17.719:E/AndroidRuntime(406):位于com.google.android.maps.Overlay.draw(Overlay.java:179)
11-13 20:14:17.719:E/AndroidRuntime(406):在com.google.android.maps.overlybundle.draw(overlybundle.java:42)
11-13 20:14:17.719:E/AndroidRuntime(406):在com.google.android.maps.MapView.onDraw(MapView.java:530)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.view.draw(view.java:6880)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.drawChild(ViewGroup.java:1646)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.drawChild(ViewGroup.java:1644)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.view.draw(view.java:6883)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.widget.FrameLayout.draw(FrameLayout.java:357)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.drawChild(ViewGroup.java:1646)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.view.draw(view.java:6883)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.widget.FrameLayout.draw(FrameLayout.java:357)
11-13 20:14:17.719:E/AndroidRuntime(406):在com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewRoot.draw(ViewRoot.java:1522)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
11-13 20:14:17.719:E/AndroidRuntime(406):在android.os.Handler.dispatchMessage(Handler.java:99)上
11-13 20:14:17.719:E/AndroidRuntime(406):在android.os.Looper.loop(Looper.java:130)
11-13 20:14:17.719:E/AndroidRuntime(406):位于android.app.ActivityThread.main(ActivityThread.java:3683)
11-13 20:14:17.719:E/AndroidRuntime(406):位于java.lang.reflect.Method.Invokenactive(本机方法)
11-13 20:14:17.719:E/AndroidRuntime(406):在java.lang.reflect.Method.invoke(Method.java:507)
11-13 20:14:17.719:E/AndroidRuntime(406):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-13 20:14:17.719:E/AndroidRuntime(406):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-13 20:14:17.719:E/AndroidRuntime(406):在dalvik.system.NativeStart.main(本机方法)
11-13 20:14:20.059:I/进程(406):发送信号。PID:406信号:9

您不应该在您的RouteDialog中扩展
活动。将上下文传递到
showCustomDialog
中,或让构造函数获取上下文并将其存储在类中

要解决此问题很容易,请在RouteDialog中更改:

public class RouteDialog {
        public void showCustomDialog(Context context){
            final Dialog dialog = new Dialog(context);
            /* leave rest as is */
然后将代码更改为显示以下对话框:

RouteDialog dialog = new RouteDialog();
dialog.showCustomDialog(this);
如果你要进去