Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα σας, 
                        Έχω ένα πρόβλημα και δεν μπορώ να το λύσω αρκετές μέρες τώρα, χρησιμοποιώ ένα 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... αλλά πάλι δεν Βρίσκω κάποια λύση.
 
 
 
Ευχαριστώ εκ των Προτέρων. 
 

 

Δημοσ.

Χωρις να ξερω με ακριβεια τι παιζει, και χωρις να εχω προσβαση σε android κτλ,

επειδη αναφερθηκες σε abstract class και το log λεει "unable to instantiate activity", θα σου θυμησω πως abstract classes cannot be instantiated by definition.

Επιπλεον, θα προτεινα το προφανες, δηλ να ποσταρεις λιγο κωδικα 

Δημοσ. (επεξεργασμένο)

Ωραια...μισο να εξηγησω για τι τωρα προσπαθω να μπω στο κλιμα...οποτε αρκετα πραγματα δεν τα γνωριζω. Λοιπον εχω μια 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 Βοήθειά σου θα είναι πολύτιμη έχω κολλήσει εδώ και αρκετό καιρό...
 
Ευχαριστώ πολύ!
Επεξ/σία από vandimen
Δημοσ.

ναι, ισχυει αυτο που σου ειπα, προσπαθει να κανει instantiate μια abstract class

 

δηλαδη, για να το πω πολυ απλα, καπου, στα εσωτερικα του συστηματος παει να γινει αυτο:

FinalGame game = new FinalGame();   // error, FinalGame is an abstract class

 

οποτε ερωτηση: γιατι η FinalGame ειναι abstract? 

Αν δεν εχεις απαντηση, τοτε, είτε απλα σβησε το abstract απο τη δηλωση της και ξαναδοκιμασε, η κληρονομησε την σε μια αλλη κλαση (κατι σαν TheActuallyFinalGame) και χρησιμποιησε αυτη στο startActivity

 

Καλη συνεχεια

Δημοσ.

Ευχαριστώ πολύ ..αν και και πήγα να το κάνω έτσι και έχω πειραματιστεί δεν βρήκα άκρη ..θα το ξανακάνω  Το θέμα είναι ότι φτιάχνω εξ αρχής καινούργιο project και τρέχω την Abstract Class ως έχει, δηλαδή από το AndroidManifest.xml  ως ΜΑΙΝ και πάλι λαμβάνω το ίδιο μήνυμα.

 

Ευχαριστω και παλι.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...