vandimen Δημοσ. 25 Φεβρουαρίου 2013 Δημοσ. 25 Φεβρουαρίου 2013 Καλημέρα σας, Έχω ένα πρόβλημα και δεν μπορώ να το λύσω αρκετές μέρες τώρα, χρησιμοποιώ ένα Framework για να φτιάξω ένα παιχνίδι και δυστυχώς όταν χρησιμοποιώ Abstract Class Λαμβάνω το παρακάτω μήνυμα: 02-25 04:52:42.224: E/AndroidRuntime(333): FATAL EXCEPTION: main 02-25 04:52:42.224: E/AndroidRuntime(333): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.soccer.manager/com.soccer.game.FinalGame}: java.lang.InstantiationException: com.soccer.game.FinalGame 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.os.Handler.dispatchMessage(Handler.java:99) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.os.Looper.loop(Looper.java:123) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.ActivityThread.main(ActivityThread.java:3683) 02-25 04:52:42.224: E/AndroidRuntime(333): at java.lang.reflect.Method.invokeNative(Native Method) 02-25 04:52:42.224: E/AndroidRuntime(333): at java.lang.reflect.Method.invoke(Method.java:507) 02-25 04:52:42.224: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 02-25 04:52:42.224: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 02-25 04:52:42.224: E/AndroidRuntime(333): at dalvik.system.NativeStart.main(Native Method) 02-25 04:52:42.224: E/AndroidRuntime(333): Caused by: java.lang.InstantiationException: com.soccer.game.FinalGame 02-25 04:52:42.224: E/AndroidRuntime(333): at java.lang.Class.newInstanceImpl(Native Method) 02-25 04:52:42.224: E/AndroidRuntime(333): at java.lang.Class.newInstance(Class.java:1409) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 02-25 04:52:42.224: E/AndroidRuntime(333): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 02-25 04:52:42.224: E/AndroidRuntime(333): ... 11 more Έχω ψάξει αρκετά αλλά δεν βγάζω άκρη... Μπορείτε να μου πείτε τι ακριβώς πρέπει να κάνω... Είδα ότι πρέπει να αλλάξω τα libaries... αλλά πάλι δεν Βρίσκω κάποια λύση. Ευχαριστώ εκ των Προτέρων.
vandimen Δημοσ. 25 Φεβρουαρίου 2013 Μέλος Δημοσ. 25 Φεβρουαρίου 2013 το Framework είναι com.badlogic.androidgames.framework. Είναι από το βιβλίο begging android games.
georgemarios Δημοσ. 28 Φεβρουαρίου 2013 Δημοσ. 28 Φεβρουαρίου 2013 Χωρις να ξερω με ακριβεια τι παιζει, και χωρις να εχω προσβαση σε android κτλ, επειδη αναφερθηκες σε abstract class και το log λεει "unable to instantiate activity", θα σου θυμησω πως abstract classes cannot be instantiated by definition. Επιπλεον, θα προτεινα το προφανες, δηλ να ποσταρεις λιγο κωδικα
vandimen Δημοσ. 1 Μαρτίου 2013 Μέλος Δημοσ. 1 Μαρτίου 2013 (επεξεργασμένο) Ωραια...μισο να εξηγησω για τι τωρα προσπαθω να μπω στο κλιμα...οποτε αρκετα πραγματα δεν τα γνωριζω. Λοιπον εχω μια Class την SoccerManager Στην οποια θελω να καλεσω την FinalGame για ξεκινησει το Framework Και να αποτυπωθουν τα Textures και κ.τ.λ. Οριστε η SoccerManager: public class SoccerManager extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newgame); Button NewGame= (Button) findViewById(R.id.new_game_button); Button Exit= (Button) findViewById(R.id.exit_button); NewGame.setOnClickListener(new OnClickListener() { public void onClick(View v){ startActivity(new Intent("com.soccer.manager.MAINMENU")); } }); Exit.setOnClickListener(new OnClickListener() { public void onClick(View v){ startActivity(new Intent(SoccerManager.this,FinalGame.class)); } }); } } Για Δοκιμή εχω Βαλει το Exit Button για να ξεκινησει το Framework. Επισης ενα κομματι απο την Abstract Class: public abstract class FinalGame extends Activity implements Game, Renderer { enum GLGameState { Initialized, Running, Paused, Finished, Idle } GLSurfaceView glView; GLGraphics glGraphics; Screen screen; LeftBackScreen LB; Game game; FileIO fileIO; GLGameState state = GLGameState.Initialized; Object stateChanged = new Object(); long startTime = System.nanoTime(); WakeLock wakeLock; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); glView = new GLSurfaceView(this); glView.setRenderer(this); setContentView(glView); glGraphics = new GLGraphics(glView); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "FinalGame"); } @Override public void onResume() { super.onResume(); glView.onResume(); wakeLock.acquire(); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { glGraphics.setGL(gl); synchronized(stateChanged) { if(state == GLGameState.Initialized){ screen = getStartScreen(); } state = GLGameState.Running; screen.resume(); startTime = System.nanoTime(); } } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { } @Override public void onDrawFrame(GL10 gl) { GLGameState state = null; synchronized(stateChanged) { state = this.state; } if(state == GLGameState.Running) { float deltaTime = (System.nanoTime()-startTime) / 1000000000.0f; startTime = System.nanoTime(); screen.update(deltaTime); screen.present(deltaTime); } if(state == GLGameState.Paused) { screen.pause(); synchronized(stateChanged) { this.state = GLGameState.Idle; stateChanged.notifyAll(); } } if(state == GLGameState.Finished) { screen.pause(); screen.dispose(); synchronized(stateChanged) { this.state = GLGameState.Idle; stateChanged.notifyAll(); } } } @Override public void onPause() { synchronized(stateChanged) { if(isFinishing()) state = GLGameState.Finished; else state = GLGameState.Paused; while(true) { try { stateChanged.wait(); break; } catch(InterruptedException e) { } } } wakeLock.release(); glView.onPause(); super.onPause(); } public GLGraphics getGLGraphics() { return glGraphics; } @Override public void setScreen(Screen screen) { if (screen == null) throw new IllegalArgumentException("Screen must not be null"); this.screen.pause(); this.screen.dispose(); screen.resume(); screen.update(0); this.screen = screen; } @Override public Screen getCurrentScreen() { return screen; } @Override public Graphics getGraphics() { throw new IllegalStateException("We are using OpenGL!"); } @Override public FileIO getFileIO() { // TODO Auto-generated method stub return fileIO; } } H Βοήθειά σου θα είναι πολύτιμη έχω κολλήσει εδώ και αρκετό καιρό... Ευχαριστώ πολύ! Επεξ/σία 1 Μαρτίου 2013 από vandimen
georgemarios Δημοσ. 1 Μαρτίου 2013 Δημοσ. 1 Μαρτίου 2013 ναι, ισχυει αυτο που σου ειπα, προσπαθει να κανει instantiate μια abstract class δηλαδη, για να το πω πολυ απλα, καπου, στα εσωτερικα του συστηματος παει να γινει αυτο: FinalGame game = new FinalGame(); // error, FinalGame is an abstract class οποτε ερωτηση: γιατι η FinalGame ειναι abstract? Αν δεν εχεις απαντηση, τοτε, είτε απλα σβησε το abstract απο τη δηλωση της και ξαναδοκιμασε, η κληρονομησε την σε μια αλλη κλαση (κατι σαν TheActuallyFinalGame) και χρησιμποιησε αυτη στο startActivity Καλη συνεχεια
nilosgr Δημοσ. 1 Μαρτίου 2013 Δημοσ. 1 Μαρτίου 2013 Ναι, βαλε public class SoccerManager extends FinalGame
vandimen Δημοσ. 1 Μαρτίου 2013 Μέλος Δημοσ. 1 Μαρτίου 2013 Ευχαριστώ πολύ ..αν και και πήγα να το κάνω έτσι και έχω πειραματιστεί δεν βρήκα άκρη ..θα το ξανακάνω Το θέμα είναι ότι φτιάχνω εξ αρχής καινούργιο project και τρέχω την Abstract Class ως έχει, δηλαδή από το AndroidManifest.xml ως ΜΑΙΝ και πάλι λαμβάνω το ίδιο μήνυμα. Ευχαριστω και παλι.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα