我的應用程序中的一個屏幕具有一個按鈕,可將用戶帶到不同的屏幕。目標屏幕由存儲在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