アプリの画面の1つに、ユーザーを別の画面にするボタンがあります。宛先画面は、SharedPreferencesに格納されている設定によって決まります。インテントのクラスを共有設定からどのように設定するのですか? 場合R.id.action_favorite_1:SharedPreferencesを使用してインテントのクラス値を設定する
これは私がボタンを持っているものを現在:
case R.id.favoriteButton1:
final Intent favorite1Screen = new Intent();
favorite1Screen.setClass(this, prefs.getString("favorite1Class", ""));
startActivity(favorite1Screen);
break;
そして、これは、その優先順位を設定することができます画面の一つである
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;
その意図は明らかにそのクラスを設定する文字列値を受け入れません。私はこの作業を行う方法がありますか?あなたはしかしsetClass方法でそれをやり続けることができ
Intent intent = new Intent(this, YourClass.class);
:
:
Intent intent = new Intent(this, 'com.mypackage.myclass_name');
またはそれは試して動作しない場合
私はこれをお勧めしません。 *外部入力を使用してクラス名を直接作成すると、セキュリティ上の問題が発生します。予期しない値を無視できるように、文字列からJavaの 'Class'(静的な' HashMap 'など)にマップするための検証ロジックを使用してください。 –
CommonsWare