преобразование строки в класс - PullRequest
4 голосов
/ 11 декабря 2010

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

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

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

... для перехода от одного занятия к другому.

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 14 мая 2011

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

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

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

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

0 голосов
/ 05 июня 2014

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

String myClass = "foo.class";
Intent i = new Intent(getApplicationContext(), Class.forName(myClass));
startActivity(i);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...