Starten Sie die Aktivität von Dienst funktioniert nicht (android)

Erstellte ich eine overlay - "immer auf den top-button", wich ist ein service HUD, und ich kann nicht starten eine Aktivität screen von dort aus, gibt es die Fehlermeldung: "Unfortunately App has stopped". In der Anfang, alles, was ich verwendet, um zu wissen, ob es irgendeine TouchEventwar ein toast, das toast wurde erstellt, aber er erstellt wurde mehreren Zeiten, also ich weiß nicht, ob es gibt, die Fehler, weil der code, die auf TouchEvent Körper , wiederholt mehreren Zeiten zu.
hier ist mein code:

public class HUD extends Service implements OnClickListener, OnTouchListener, OnLongClickListener {
Button mButton;
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();
    //mView = new HUDView(this);


    mButton = new Button(this);
    mButton.setId(1);
    mButton.setText("Button");
    mButton.setClickable(true);
    mButton.setOnTouchListener(this);


    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_PHONE,
                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
                    PixelFormat.OPAQUE);

    params.gravity = Gravity.LEFT | Gravity.TOP;
    params.setTitle("Load Average");
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    wm.addView(mButton, params);


}

@Override
public void onDestroy() {
    super.onDestroy();
    if(mButton != null)
    {
        ((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mButton);
        mButton = null;
    }
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getX()<mButton.getWidth() & event.getY()>0)
    {
    Toast.makeText(this,"Overlay button event", Toast.LENGTH_SHORT).show(); //this my toast
    Intent i = new Intent();                                                //this is my new acivity (intent)
    i.setClass(HUD.this, screen.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
    HUD.this.stopSelf();
    }
    return false;
}


@Override
public void onClick(DialogInterface dialog, int which) {
    //TODO Auto-generated method stub
    Toast.makeText(this,"Click", Toast.LENGTH_SHORT).show();
}

@Override
public boolean onLongClick(View v) {
    //TODO Auto-generated method stub
    System.exit(1);
    return false;
}

}

Also meine Frage ist, ist dieser code auf TouchEvent Körper wiederholt zu mehreren Zeiten? Wenn es ist, ist, dass die Ursache des Fehlers? danke.

log cat:

07-20 22:11:06.962: I/Choreographer(1620): Skipped 52 frames!  The application may be doing too much work on      its main thread.
07-20 22:11:08.062: D/AndroidRuntime(1620): Shutting down VM
07-20 22:11:08.062: W/dalvikvm(1620): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
07-20 22:11:08.132: E/AndroidRuntime(1620): FATAL EXCEPTION: main
07-20 22:11:08.132: E/AndroidRuntime(1620): android.app.SuperNotCalledException: Activity    {com.example.screenshot/com.example.screenshot.screen} did not call through to super.onCreate()
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2146)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.os.Looper.loop(Looper.java:137)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at android.app.ActivityThread.main(ActivityThread.java:5041)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at java.lang.reflect.Method.invokeNative(Native Method)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at java.lang.reflect.Method.invoke(Method.java:511)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-20 22:11:08.132: E/AndroidRuntime(1620):     at dalvik.system.NativeStart.main(Native Method)

screen.java:

public class screen extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
Toast.makeText(getApplicationContext(), "Made it", 0).show();
finish();
}
}
  • Verwenden LogCat zu prüfen, die Java-stack-trace in Verbindung mit Ihrem Absturz.
  • Versuchen Sie return; nach finish();
InformationsquelleAutor Pedro Fraga | 2013-07-20
Schreibe einen Kommentar