2011-10-29 27 views
5

Próbuję utworzyć klasę Activity z ciągu znaków i przekazać ją do metody statycznej. Znalazłem to na SO, aby przekazać ciąg do klasy. FirstActivity jest już utworzony.Konwertuj ciąg na klasę aktywności

SecondActivity

String myClass = "com.package.FirstActivity"; 
Class<?> myClass = Class.forName(myClass); 
//this works 
//Intent myIntent = new Intent(getApplicationContext(), myClass); 
//I want to pass to a static method, but it gives a error. Class cannot cast to Activity 
StaticMethod.processThis(myClass , "test"); 

staticmethod

public static void processThis(Activity contextActivity, String str) { 
    //do processing 
} 

Jak mogę uzyskać processThis do pracy? Jeśli dobrze rozumiem, Activity jest także klasą?

+0

Dokładnie jaki masz problem? Czy chcesz rozwiązać pewien problem w swojej aplikacji, czy chcesz pracować z powyższym kodem? – Oybek

+0

Chcę, aby moja metoda 'processThis' działała. Sprawiłam, że moje pytanie było jaśniejsze. – newbie

+0

Musisz rzucić. –

Odpowiedz

6

Musisz utworzyć nowe wystąpienie FirstActivity. Jeśli ta klasa ma konstruktora z brakiem argumentów, możesz wykonać następujące czynności:

String myClass = "com.package.FirstActivity"; 
Class<?> myClass = Class.forName(myClass); 
Activity obj = (Activity) myClass.newInstance(); 
Intent myIntent = new Intent(getApplicationContext(), myClass); //Maybe here also obj must be needed 

//Noe pass your object here 
StaticMethod.processThis(obj, "test"); 
+1

Dzięki! Tego właśnie szukałem. Nie mogłem znaleźć sposobu, by rzucić klasę na działanie. – newbie

+0

Ale nawet nie myśl, aby zmienić swoją strukturę później: - / – Isabelle