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 TouchEvent
war 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;
nachfinish();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen android start activity aus dem Dienst
Du Fehler scheint zu sein, im inneren
screen
Aktivität. Es gibt viele Threads, die helfen könnten, um herauszufinden, den Fehler, dass Sie immer für die Aktivität:Fehler in Android "SuperNotCalledException:Aktivität nicht nennen durch super.OnCreate()"
android.app.SuperNotCalledException: Aktivität nicht nennen durch super.onStop()
Update
Der Fehler ist, da Sie noch nicht genannt:
super.onCreate(savedInstanceState);
in Ihremscreen
AktivitätonCreate()
. Das sollte das erste, was aufgerufen werden sollonCreate()
. Etwas wie das hier tun:Hoffe, das hilft.
com.example.screenshot.screen
Klasse. So haben Sie einescreen.java
Aktivität? Können Sie nach dem code?screen
Klasse ist das problemscreen
Klasse scheint das problem zu sein. Es ruft nichtsuper.onCreate(savedInstanceState);
innerhalb deronCreate()
. Auch einfach nur neugierig, warum nennst duonFinish()
imonCreate()
? wenn Sie nur wollen, um zu beenden die Aktivität, sobald Sie erstellt haben, dann ruftfinish()
ist okay.