Android — проблемы с намерением запуска

#android #android-activity #android-intent #classnotfoundexception

#Android #android-активность #android-намерение #classnotfoundexception

Вопрос:

Когда я хочу начать новое действие, я использую этот код:

 Intent myIntent1 = new Intent(this, Info1.class);
startActivity(myIntent1);
  

Но, как насчет случая, я получаю имя класса из строкового массива? Я пробовал метод class.forName следующим образом:

 Intent intent = new Intent(this, Class.forName(array[1]));
startActivity(intent);
  

Но безуспешно. Это выдает мне ошибку

java.lang.Исключение ClassNotFoundException: Info1 в загрузчике dalvik.system.PathClassLoader

несмотря на то, что в первом случае он успешно запустил действие. Я должен добавить, что я на 100% уверен, что array [1] содержит строку «Info1» и что у меня есть Info1.class в моем пакете.

Знаете ли вы, как это решить?

Ответ №1:

Метод

 Class.forName("xxxxx");
  

Требуется полное имя, что означает, что вы должны указать имя вместе с деталями пакета (в каком пакете существует класс)

в качестве примера

 Class.forName("com.mypackage.MyClass");
  

Ссылка на документацию здесь

Ответ №2:

Вам нужно добавить полное имя пакета к вашему параметру class.forName, например, ple вместо array[1] .

Ответ №3:

Попробуйте следующее:

 Class clazz = Thread.currentThread().getContextClassLoader().findClass(array[1]);
new Intent(this, clazz);