Hilfe bei Android-App

Macht Sinn, hier ist die gesamte LogCat:
Code:
04-17 20:21:05.860: D/dalvikvm(18935): Late-enabling CheckJNI
04-17 20:21:05.920: D/AndroidRuntime(18935): Shutting down VM
04-17 20:21:05.920: W/dalvikvm(18935): threadid=1: thread exiting with uncaught exception (group=0x418fb2a0)
04-17 20:21:05.925: E/AndroidRuntime(18935): FATAL EXCEPTION: main
04-17 20:21:05.925: E/AndroidRuntime(18935): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.ballsimulation/com.example.ballsimulation.BallSimulation}: java.lang.ClassNotFoundException: com.example.ballsimulation.BallSimulation
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2024)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.ActivityThread.access$600(ActivityThread.java:140)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.os.Handler.dispatchMessage(Handler.java:99)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.os.Looper.loop(Looper.java:137)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at java.lang.reflect.Method.invokeNative(Native Method)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at java.lang.reflect.Method.invoke(Method.java:511)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at dalvik.system.NativeStart.main(Native Method)
04-17 20:21:05.925: E/AndroidRuntime(18935): Caused by: java.lang.ClassNotFoundException: com.example.ballsimulation.BallSimulation
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.Instrumentation.newActivity(Instrumentation.java:1057)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2015)
04-17 20:21:05.925: E/AndroidRuntime(18935): 	... 11 more
 
Ändere im Manifest mal

Code:
<activity
            android:name=".BallSimulation"


zu


Code:
<activity
            android:name="com.example.ballsimulation.BallSimulation"
 
Hat nichts geholfen, jetzt kommt dieser Log: :what:
Code:
04-17 20:53:07.150: D/dalvikvm(27207): Late-enabling CheckJNI
04-17 20:53:07.220: D/AndroidRuntime(27207): Shutting down VM
04-17 20:53:07.220: W/dalvikvm(27207): threadid=1: thread exiting with uncaught exception (group=0x418fb2a0)
04-17 20:53:07.225: E/AndroidRuntime(27207): FATAL EXCEPTION: main
04-17 20:53:07.225: E/AndroidRuntime(27207): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.ballsimulation/com.example.ballsimulation.BallSimulation}: java.lang.ClassNotFoundException: com.example.ballsimulation.BallSimulation
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2024)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.ActivityThread.access$600(ActivityThread.java:140)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.os.Handler.dispatchMessage(Handler.java:99)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.os.Looper.loop(Looper.java:137)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.ActivityThread.main(ActivityThread.java:4898)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at java.lang.reflect.Method.invokeNative(Native Method)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at java.lang.reflect.Method.invoke(Method.java:511)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at dalvik.system.NativeStart.main(Native Method)
04-17 20:53:07.225: E/AndroidRuntime(27207): Caused by: java.lang.ClassNotFoundException: com.example.ballsimulation.BallSimulation
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.Instrumentation.newActivity(Instrumentation.java:1057)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2015)
04-17 20:53:07.225: E/AndroidRuntime(27207): 	... 11 more
 
Dann hast du deine BallSimulations Klasse in einem anderen package. Da ich leider nicht hellsehen kann, musst du es mir sagen oder selber fixen. :ugly:
 
So, ich habe heute nochmal ein neues Projekt erstellt und meinen Code kopiert, nach ein Bisschen Debuggen habe ich endlich meinen ersten Meilenstein erreicht: Es werden im Programmcode erzeugte Bälle simuliert!!!!!:daumen:

Jetzt habe ich noch ein paar Fragen:
Ich habe folgenden Code:
Code:
public void onDraw(Canvas canvas)
	{
		//Draw Text		
		
		//Draw Balls
		Ballengine.DrawBalls(canvas);
		
		//Do a further Loop
		gameloop();
	}

und diesen:
Code:
private void gameloop()
	{
		if(isrunning == true)
		{
			//Handle Input			
			
			//Do computations			
			Ballengine.Bewegung();
			Ballengine.KollisionBall();
			Ballengine.KollisionRand(blänge, bbreite);
			
			//Draw all the stuff
			invalidate();	
		}
	}
Ist dies eine gute Art einen Loop zu realisieren? Ich hatte den Gameloop erst in einer while Schleife, doch damit kam kein Bild zustande ???

Wie füge ich am Besten einen KeyListener zu meiner View Klasse hinzu? Über ein Interface?:schief:
 
Bei deinen Methoden / Variablen Namen läuft es mir echt Kalt den Rücken runter. :fresse:

Naja, man kann es so machen, ist aber jenseits von Performant, weil Androids View Klassen dafür nicht wirklich ausgelegt sind.

Was für ein Listener willst du realisieren?
 
Ich möchte beim Endanwender folgendes:
-Finger auf Display legen, ziehen und loslassen: Ball in die Richtung "schießen"
-Finger auf Ball tippen: Ball löschen
-2 Finger spreizen, zusammenführen: Eine Variable für die Ballgröße ändern
-2, 3 Finger gleichzeitig auf Display legen, Bälle der Reihe nach spawnen, löschen.

Ich denke ich brauche einen onTouch Listener und einen onGesture eListener, hab aber noch nicht so viel darüber gelesen.
 
So,
nach einem guten Stück Arbeit und extrem lästigem Debugging (Anfängerfehler :ugly: ) hat meine app nun endlich "Silberstatus" erreicht!!! :daumen:
Erstmal noch vielen Dank an Leandros für die Hilfe :daumen: .
Ich häng die unsignierte .apk Datei und den Quellcode an, würde mich freuen wenn das ein paar testen könnten, ihr müsst auf eurem Handy mindestens android 4 laufen haben und das installieren von Apps, die nicht aus dem Play-Store sind erlauben (unter Einstellungen - Sicherheit).

Jch habe noch ein paar Probleme:
1. Warum hält die app nicht an wenn ich sie verlasse?
2. ICh habe ein Array fester Größe und lösche ein Objekt aus Beliebiger Stelle, dafür verwende ich folgenden Code:

Code:
for(int position=d; position<anzahl; position++)
{
	ballliste[position] = ballliste[position+1];
}		
anzahl--;
Wobei anzahl die Elemente im Array darstellt und position die Stelle darstellt. d ist eine Zahl innerhalb der im Array vorhandenen Elemente. Wenn ich jetzt das letzte Element habe, kommt ein Fehler, da position+1 größer als mein Array ist.
Habt ihr eine Lösung?

Wenn jemand sonst noch Optimierungsvorschläge hat - immer her damit;)
 

Anhänge

Wenn ich jetzt das letzte Element habe, kommt ein Fehler, da position+1 größer als mein Array ist.
Habt ihr eine Lösung?
mach doch einfach ne fallunterscheidung:
if(letztes element) lösche letztes element; (also einfach anzahl--)
else rücke alle ab element auf; (also das, was du jetzt schon hast)

hmm, wäre vllt sinniger, das so zu machen:
if(nicht letztes element) -> dein code
anzahl--

so wird die anzahl in jedem fall verringert, das aufrücken erfolgt aber nur, wenns nicht das letzte is, was gelöscht werden soll.
 
So, dann ist jetzt hier die richtige .apk Datei, habs extra getestet :schief:

Viel Spaß beim Testen :daumen:
 
So, jetzt ist der Goldstatus erreicht :daumen:
Das Problem mit dem nicht - Pausieren war, dass ich die Bewegung per Zeitmessung ausführe. Wenn ich jetzt die Appm Pausiere ist es bis zum nächsten aufruf der Funktion ein extrem großeß Zeitfenster und die Bälle sind ganz woanders hinbewegt worden - muss man erstmal finden den Fehler:what: .
Ich stell die App wieder in den Anhang, wem noch Fehler auffallen sollten der sagt einfach bescheid :daumen:
 

Anhänge

Zurück