2017-02-18 7 views
0

Ich bin ein bisschen fest auf diesem einen, es ist nicht zu kompliziert, aber es hat mich geschlagen! Ich versuche, die Benutzersitzung fortzusetzen, indem ich den Namen der letzten Aktivität abrufe und sie dann an eine Absicht weitergebe.
Wo ich feststecke, wandelt die abgerufene Zeichenfolge in einen Klassennamen um, so dass der resumeIntent sie verwenden kann.Konvertieren String-Wert in einen Java-Klassennamen

public void Resume (View view){ 
    SharedPreferences sharedPref =    
    PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 
    String resumeName = sharedPref.getString("ActivityName", null); 
    //probably need to do something here// 
    Intent resumeIntent = new Intent (this, resumeName); 
    startActivity(resumeIntent);} 
+2

hast du versucht 'new Intent (das, Class.forName (resumeName))' ?? – Panther

+0

Vielen Dank, es funktioniert perfekt :) –

Antwort

3

Try ::

Intent resumeIntent = new Intent (this, Class.forName(getPackageName() + resumeName); 
startActivity(resumeIntent); 

UPDATE

String resumeName = YourActivityName.class.getCanonicalName(); 
try { 
    Class newClass = Class.forName(resumeName); 
    Intent resume = new Intent(this, newClass); 
    startActivity(resume); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 

Shop die kanonischen Namen der Aktivität in dem String-Variable.

+0

Danke, das war hilfreich. –

+0

Nicht zu erwähnen. Wenn es hilfreich war und Ihr Problem gelöst wurde, markieren Sie dies als akzeptierte Antwort. – Bayou

Verwandte Themen