2010-12-11 4 views
4

ユーザーの入力に基づいて、アクティビティ間を移動しようとしています。文字列をクラスに変換する

私が使用しようとしている:

String myClass = "some_user_input.class" 
Intent myIntent = new Intent(getApplicationContext(), myClass); 
startActivity(myIntent); 

...別のアクティビティから移動すること。

私は新しいアクティビティをハードコードで直接参照し、テキスト(つまりclassA.class)からコンパイルしようとしませんが、私は新しいアクティビティを渡すことで自分のインテントを構築できるようにしたいところですそれはユーザーによってコンパイルされたいくつかの文字列です。

たとえば、ユーザーが編集文でBを入力した場合、classB.class に移動します。ユーザーがZを入力すると、classZ.classに行きます。

文字列を使ってクラスに変換したいクラスをコンパイルする方法はありますか?

ありがとうございます!

+0

[Classloader.loadClass](HTTPを試してみてください:// dは。 android.com/reference/java/lang/ClassLoader.html) – mibollma

+0

あなたは複数のパッケージを持っています – Trikaldarshi

答えて

5

反射機構は、あなたがそれを行うことができます。これらのクラスは、AndroidマニフェストXMLに含まれるべきであることを

String myClass = "some_user_input"; 
Class<?> clazz = Class.forName(myClass); 
Intent myIntent = new Intent(getApplicationContext(), clazz); 

は注意してください。

はまた、私はこの例:)

+1

あなたのコードを試しました。そのクラスを投げることはありません。どんな考え? – Varundroid

+0

'us.foobar.package.some_user_input'のように完全なパッケージをStringに追加する必要があるため、例外がスローされます。 – Rico

0

で例外を処理していないことに注意してください。これはClass.forName()メソッドを使用して、私のソリューションです:

String myClass = "foo.class"; 
Intent i = new Intent(getApplicationContext(), Class.forName(myClass)); 
startActivity(i); 
関連する問題