2011-10-29 11 views
5

文字列からActivityクラスを作成し、それを静的メソッドに渡そうとしています。私はSO上で文字列をクラスに渡すことを見つけました。 FirstActivityは既に作成されています。私はprocessThisが仕事を得ることができますどのよう文字列をアクティビティクラスに変換する

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 
} 

?私が正しく理解すれば、Activityもクラスですか?

+0

問題は何ですか?あなたのアプリケーションで特定の問題を解決したいのですか、または上記のコードを作業したいですか? – Oybek

+0

私は 'processThis'メソッドを動作させたいと思っています。私の質問を明確にしました。 – newbie

+0

キャストする必要があります。 –

答えて

6

FirstActivityの新しいインスタンスを作成する必要があります。このクラスに引数なしのコンストラクタがある場合は、次の操作を実行できます。

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

ありがとう!これは私が探していたものでした。私はクラスをアクティビティにキャストする方法を見つけることができませんでした。 – newbie

+0

しかし、後であなたの構造を変更するとは思わない: - / – Isabelle