2012-03-27 19 views
1

Ist es möglich, einen dynamischen Aufruf zur Absicht zu erstellen?
Ich möchte eine String-Variable dynamisch drücken mIntent in eine Absicht Anruf genannt .. ist es möglich:Aufruf einer Klasse dynamisch?

Intent newView = new Intent(getContext(), mIntent); 

        newView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        getContext().startActivity(newView) 

meine Lösung, bei der "mIntent" ist ein String:

Intent i = new Intent(Intent.ACTION_VIEW); 
        i.setComponent(new ComponentName("com.slcinstore2","com.lcinstore2."+mIntent)); 
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

        getContext().startActivity(i); 

, das zu tun und dann Hinzufügen zu meinen Manifest-Arbeiten!

+0

Ihre Frage ist unklar ,, wo Sie 'String variable' schieben? –

+0

Was ist die Art von 'mIntent'? Was möchten Sie in der Aktivität tun, die Sie anrufen? –

+0

mIntent ist eine Zeichenfolge, die ich von einer Datenbank bekommen habe. Ich möchte, dass es mein Klassenname ist und starte die neue Absicht – erik

Antwort

3

Ihre Frage ist ein wenig unklar, aber vielleicht verstehe ich immer noch, was Sie versuchen zu tun. Sie Intent soll wie folgt aussehen:

String clsName = "com.foo.bar.myClass"; // fully qualified name 

Intent newView = new Intent(getContext(), Class.forName(clsName)); 
.... 
.... 
startActivity(newView); 

Dies könnte das sein, was Ihr Denken an .... ich das getestet Havnt so weiß ich nicht, ob es tatsächlich funktioniert.

1

können Sie verwenden Class.forName() und verwenden getPackageName() zu vermeiden Hardcoding:

Intent newView = new Intent(getContext(), Class.forName(getPackageName() + "YourClassName")); 
startActivity(newView); 
Verwandte Themen