【发布时间】:2016-11-28 21:15:29
【问题描述】:
我的应用程序中的一个屏幕有一个按钮,可将用户带到另一个屏幕。目标屏幕由存储在 SharedPreferences 中的首选项确定。如何从共享偏好设置 Intent 的类?
这是我目前拥有的按钮:
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;
intent 显然不接受字符串值来设置其类,有没有办法让这个工作?
【问题讨论】:
-
我不推荐这个。使用外部输入直接创建类名会引发安全问题。使用某种验证逻辑将您的字符串映射到 Java
Class(例如,静态HashMap<String, Class>),以便能够忽略意外值。
标签: android android-intent sharedpreferences