5

L'istruzione seguente non è in esecuzione su alcuni dispositivi.Qualsiasi metodo alternativo per la trasmissione di classi

AddEvent act1 = (AddEvent) getLocalActivityManager().getCurrentActivity(); 

Esiste un metodo alternativo per l'istruzione precedente. Su alcuni dispositivi funziona bene, ma su altri dispositivi offre un'eccezione.

Click here... Yellow text shows exception

Edit: La mia applicazione è sviluppata nella tab. I risultati di OnActivity vengono utilizzati per ottenere immagini dall'attività della fotocamera. Non so dove risiede ma quando inserisco l'istruzione sopra in try catch, non si verifica alcuna chiusura forzata e l'eccezione viene mostrata lì.

+0

Che cosa lanciare suActivityResult? – Snicolas

+0

cosa vuoi fare? – Sam

+0

Invia le tracce dello stack per testo, lo screenshot è difficile da leggere e lo stack overflow non beneficia dell'annuncio per micro $ oft (angolo in basso a sinistra). – Snicolas

risposta

2

Non sono sicuro di dove si scrive questa riga, ma l'output di logcat dice: Stai provando a trasmettere l'attività Home a AddEvent e questo è il motivo per cui ti dà ClassCastException.

FYI, getLocalActivityManager().getCurrentActivity(); restituisce Home.

+0

ma perché questo accade solo su alcuni dispositivi. Come funziona bene su HTC Wildfire ma si blocca su Sony Xperia miro e scheda Samsung. –

3

Il problema non riguarda il casting, ma il presupposto che l'oggetto restituito da getLocalActivityManager().getCurrentActivity() sia di tipo AddEvent. Sarebbe difficile dire in quale scenario il getLocalActivityManager().getCurrentActivity() restituisce un oggetto che non è del tipo AddEvent senza guardare l'implementazione.

Il seguente pezzo di codice controlla se l'oggetto restituito è infatti di tipo AddEvent:

if(getLocalActivityManager().getCurrentActivity() instanceof AddEvent){ 
    AddEvent act1 = (AddEvent) getLocalActivityManager().getCurrentActivity(); 
} 

Ma nel tuo caso, si consiglia di verificare in quale scenario non l'getLocalActivityManager().getCurrentActivity() restituire un'istanza di fable.eventippo.Home come contro fable.eventippo.AddEvent.

+0

ma perché questo accade solo in alcuni dispositivi. Come funziona bene su HTC Wildfire ma si blocca su Sony Xperia miro e scheda Samsung. –

+0

utilizzando instanceof Sono in grado di vedere su quale dispositivo sta funzionando o meno ... Ma come implementare su dispositivi non supportati. Significa come creare forzatamente l'istanza di classe. –

+0

Non è possibile applicare * force * per creare un'istanza di qualcosa che ci si aspetta, mediante il cast. Inoltre, 'ActivityGroup' e' LocalActivityManager' sono deprecati. Utilizza invece l'API 'Fragment' e' FragmentManager'. È possibile utilizzare la libreria di supporto (pacchetto di compatibilità) per supportare piattaforme meno recenti. – Rajesh

Problemi correlati