2010-12-11 49 views
4

我正試圖根據某些用戶輸入在一個活動與另一個活動之間移動。將字符串轉換爲類

我試圖使用方法:

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

...移動從一個活動到另一個。

我可以做到這一點好的地方,我直接在硬代碼中引用我的新活動,不要嘗試從文本(即classA.class)編譯它,但是我希望能夠通過傳遞來構建我的意圖它由用戶編譯一些字符串。

例如,如果在一個EditText用戶輸入B,我想去classB.class 如果用戶輸入Z,我想去classZ.class

有沒有什麼辦法可以編譯我想使用的字符串,然後轉換爲類?

在此先感謝!

+0

嘗試[Classloader.loadClass(HTTP:// d。 android.com/reference/java/lang/ClassLoader.html) – mibollma 2010-12-11 18:57:12

+0

你有多個包 – Trikaldarshi 2013-06-18 17:22:01

回答

5

反射機制可以讓你做到這一點:

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

請注意,這些類應包含在Android清單XML。

另外請注意,我沒有處理異常在這個例子:)

+1

我試過你的代碼。它拋出classnotfoundexception。任何想法爲什麼? – Varundroid 2012-09-18 09:48:26

+0

它會引發異常,因爲您需要將完整的包添加到字符串中,例如'us.foobar.package.some_user_input' – Rico 2014-06-04 16:59:15

0

這是使用Class.forName()方法我的解決方案:

String myClass = "foo.class"; 
Intent i = new Intent(getApplicationContext(), Class.forName(myClass)); 
startActivity(i);