8

アプリケーションのすべてのアプリケーション設定のリストを取得する方法、

1.この方法で共有設定を保存していますキーと値のペアを目的の設定xmlに保存するアクティビティ

2.私は彼らが中にいることを知っていますdata/data/app_packagename/shared_prefs 優先Xmlのshared_prefフォルダー


3.問題:しかし、スピナーですべての設定xmlファイルのリストを取得する方法 ここに画像の説明を入力してください

各設定を読み、SOで検索しましたが、これに関するヘルプは見つかりませんでした。アプリケーションディレクトリ内のすべての設定xmlファイルを読み取り、設定にアクセスするにはどうすればよいですか?

PS:私は知って SharedPreference.getAll();います、ファイルを取得したら読むのに十分ですか?

ビット(ラフコード)で書いたのですが、実行しようとするとエラーになります。実装されているメソッドは次のとおりです。

void getList()
{
  //will be invoked from onCreate to populate spinner,yes spinner is already binded
   PackageManager m = getPackageManager();
        String s = getPackageName();
        try {
            PackageInfo p = m.getPackageInfo(s, 0);
            s = p.applicationInfo.dataDir;
        } catch (NameNotFoundException e) {
            Log.w("yourtag", "Error Package name not found ", e);
        }
        Log.i("dir", s=s+"/shared_prefs");
     //is this write way, how to proceed from here
}
4

3 に答える 3

29

これを試して

    File prefsdir = new File(getApplicationInfo().dataDir,"shared_prefs");

    if(prefsdir.exists() && prefsdir.isDirectory()){
        String[] list = prefsdir.list();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, android.R.id.text1,list);
        Spinner sp = (Spinner) findViewById(R.id.spinner1);
        sp.setAdapter(adapter);

    }

//選択したアイテムを取得するには

String item = (String) sp.getSelectedItem();
    //remove .xml from the file name
    String preffile = item.substring(0, item.length()-4);

    SharedPreferences sp2 = getSharedPreferences(preffile, MODE_PRIVATE);
    Map<String, ?> map = sp2.getAll();          

    for (Entry<String, ?> entry : map.entrySet()){
        System.out.println("key is "+ entry.getKey() + " and value is " + entry.getValue());
    }
于 2013-02-01T17:27:57.783 に答える
2

リフレクションを使用する場合は、@ hidden関数Context#getSharedPrefsFile(String name)があります

だからあなたは電話します

shared_prefsディレクトリへの参照を取得するためのContext#getSharedPrefsFile(String name).getParentFile()

于 2015-05-03T00:28:40.283 に答える
-3
public class Preferences extends PreferenceActivity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // load the XML preferences file
        addPreferencesFromResource(R.xml.preferences);
    }
}

次に、メインクラスで、設定を参照できます

public class DrinkingBuddy extends Activity 
                           implements OnSharedPreferenceChangeListener {

    private int weight;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

        // register preference change listener
        prefs.registerOnSharedPreferenceChangeListener(this);

        // and set remembered preferences
        weight = Integer.parseInt((prefs.getString("weightPref", "120");
        // etc
    }

    // handle updates to preferences
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        if (key.equals("weightValues")) {
            weight = Integer.parseInt((prefs.getString("weightPref", "120");
        }
        // etc
    }
}

設定の更新の保存は自動的に処理されます。

(公的/私的宣言についてはあまりよくわかりません!)。

于 2013-01-29T09:59:44.153 に答える