2012-01-05 17 views
0

私は最初のAPKを書いています。私はいくつかの助けが必要です。私は好みのXMLから好みを見つけるために多くの同様のコードを使用しています。プリファレンスコード最適化を見つける

final Preference backupPref = findPreference("backuptw"); 
    backupPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == backupPref)doBackup(); 
      return true; 
     } 
    }); 
    final Preference restorePref = findPreference("restoretw"); 
    restorePref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == restorePref)doRestore(); 
      return true; 
     } 
    }); 
    final Preference tw160Pref = findPreference("tw160"); 
    tw160Pref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == tw160Pref)doTW("160"); 
      return true; 
     } 
    }); 
    final Preference tw192Pref = findPreference("tw192"); 
    tw192Pref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == tw192Pref)doTW("192"); 
      return true; 
     } 
    }); 
    final Preference tw240Pref = findPreference("tw240"); 
    tw240Pref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == tw240Pref)doTW("240"); 
      return true; 
     } 
    }); 
    final Preference restartPref = findPreference("restart"); 
    restartPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == restartPref)doRestart(); 
      return true; 
     } 
    }); 
    final Preference sortPref = findPreference("sort"); 
    sortPref.setOnPreferenceClickListener(new OnPreferenceClickListener(){ 
     public boolean onPreferenceClick(Preference preference) { 
      if(preference == sortPref)doSort(); 
      return true; 
     } 
    }); 

私はfindPreference私は全く好きではない時代、多くのを使用しています:ここで

は、コードスニペットです。誰かが何か良いことを示唆できますか?

答えて

1

キーは環境設定の名前で、追加するいくつかの整数インデックスを指定するすべての環境設定に対してハッシュマップを作成できます。例えば。

final int INDEX_BACKUPTW = 0; 

HashMap<String, Integer> mPrefMap = new HashMap<String, Integer>(); 

mPrefMap.put("backuptw", INDEX_BACKUPTW) 

のように... は、それからちょうどこのように一つだけonClickListenerます

OnPreferenceClickListener(){ 
    public boolean onPreferenceClick(Preference preference) { 
     if (preference.hasKey()) { 
      int index = mPrefMap.get(preference.getKey()); 
      switch (index) 
      { 
       case INDEX_BACKUPTW: 
        doBackup(); 
        break; 
       case INDEX_SOME_OTHER_INDEX_I_HAVE: 
        doWhatever(); 
        break; 
       default: 
        Log.e(TAG, "Achtung!"); 
      } 
     } 
     return true; 
    } 
} 

は、すべてのあなたの好みにこのリスナーを割り当て、楽しみを持っています。この場合、コードは今のようには見えません。

+0

ありがとうございました。これは私にとって完璧だと思います。受け入れられました。 –

0

環境設定を動的に追加してフィールドや同様のものとして保存するのは良いスタートかもしれませんが、コードの改善とは思われません。

関連する問題