Как создать Intent, используя строку для запуска другого действия? - PullRequest
0 голосов
/ 05 марта 2010

Первое действие в моем приложении должно загрузить небольшой объем данных из текстового файла.Две строки и целое число.

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

Текущее действие не будетможет иметь жестко запрограммированную ссылку, например, так:

startActivity(new Intent(this, NextClass.class));

NextClass.class нужно будет указать из строки в файле, и он будет включен в проект.создайте файл данных в другом действии, но я надеюсь избежать создания другого действия только для этого, когда возможен другой способ.

Ответы [ 3 ]

4 голосов
/ 06 января 2011

Попробуйте это:

try {
    String className = 'com.www.tutorialforandroid.com.openActivity';
    Intent openNewIntent = new Intent( this, Class.forName( className ) );
    startActivity(  openNewIntent );
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
1 голос
/ 05 марта 2010

Все ли потенциальные классы встроены в ваш проект? Если это так, вы не можете просто прочитать имя строки в первом упражнении, а затем перевести строку в фактическое имя класса (например, -

String className = getActivity(); //your reader for the string
if (className == "A") {
    startActivity(new Intent(this, A.class));
}
else if (className == "B") {
    startActivity(new Intent(this, B.class));
}

и т.д.

0 голосов
/ 05 марта 2010

Запуск произвольных действий через имена компонентов хрупок, потому что нарушает инкапсуляцию. Если другой фрагмент кода будет подвергнут рефакторингу, ваша строка внезапно перестанет действовать. Делайте это только в рамках одного проекта, где любой такой рефакторинг будет подхвачен компилятором.

Кроме того, в зависимости от того, где находится этот файл, могут возникнуть проблемы с безопасностью.

Либо используйте PackageManager, чтобы найти действие с помощью самоанализа, либо попросите файл содержать строку действия, а другим действиям настроить Intent фильтры для соответствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...