В одном из экранов моего приложения есть кнопка, которая выводит пользователя на другой экран. Экран назначения определяется предпочтением, сохраненным в SharedPreferences. Как установить класс Intent из общих настроек?Использование SharedPreferences для установки значения класса для намерения
Это в настоящее время, что у меня есть для кнопки:
case R.id.favoriteButton1:
final Intent favorite1Screen = new Intent();
favorite1Screen.setClass(this, prefs.getString("favorite1Class", ""));
startActivity(favorite1Screen);
break;
И это один из экранов, где можно установить, что предпочтение: случай R.id.action_favorite_1:
final SharedPreferences prefs2 = getSharedPreferences("myDataStorage", MODE_PRIVATE);
final SharedPreferences.Editor nEditor = prefs2.edit();
nEditor.putString("favorite1Text", "Job Hazard Analysis");
nEditor.putString("favorite1Color", "Safety");
nEditor.putString("favorite1Intent", "Job_Hazard_Analysis");
nEditor.commit();
break;
Цель явно не примет строковое значение, чтобы установить его класс, есть ли способ, которым я могу сделать эту работу?
Я не рекомендую этого. Использование внешнего ввода для * напрямую * создание имени класса открывает проблемы с безопасностью. Используйте некоторую логику проверки для сопоставления из вашей строки в Java 'Class' (например, статический' HashMap '), чтобы иметь возможность игнорировать неожиданные значения. –
CommonsWare