Преобразование строки в класс

Я пытаюсь переместиться между одним действием в другое, основываясь на некотором пользовательском вводе.

Я пытаюсь использовать:

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

… переходить от одной активности к другой.

Я могу сделать это нормально, когда я ссылаюсь на свою новую активность непосредственно в жестком коде и не пытаюсь скомпилировать ее из текста (например, classA.class), однако я хочу иметь возможность построить свое намерение, передав ему некоторую строку, скомпилированную Пользователем.

Например, если пользователь вводит B в edittext, я хочу перейти в classB.class Если пользователь вводит Z, я хочу перейти в classZ.class .

Есть ли способ, которым я могу скомпилировать класс, который я хочу использовать, используя строки, которые затем конвертирую в класс?

Заранее спасибо!

Механизм отражения позволяет это сделать:

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

Обратите внимание, что эти классы должны быть включены в XML-манифест андроида.

Также обратите внимание, что в этом примере я не обрабатывал исключение 🙂

Это мое решение с использованием Class.forName() :

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