我的应用程序中的一个屏幕具有一个按钮,可将用户带到不同的屏幕。目标屏幕由存储在SharedPreferences中的首选项决定。如何从共享首选项设置意图的类?使用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