2012-03-05 16 views
6

共有プリファレンスファイルが初めて作成される時期を知りたいと思いますか?共有プリファレンスファイルは、いつ初めて作成されますか?

私は、次のコードを持っている:どのように私は、ファイル名でgetSharedpreferenceを()、使用することができ、また

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="User settings"> 
     <EditTextPreference android:title="User Name" 
     android:key="userName" android:summary="Please Enter User Name"></EditTextPreference> 
     <EditTextPreference android:title="Password" 
     android:key="password" android:summary="Password Here" 
     android:inputType="textPassword"></EditTextPreference> 
</PreferenceCategory> 

</PreferenceScreen> 


    public class PrefsActivity extends PreferenceActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.prefs); 
    } 
} 

を?最初にこのファイルを作成してアプリのデータディレクトリに配置する必要があるかどうかはわかりません。

私は、共有設定ファイルが最初に作成される時期:アプリケーションがインストールされているか、しばらくしてからですか?後で、いつ?

答えて

12

getSharedPreferences(name, mode)メソッドは、指定した名前のファイルを自動的に作成するため、作成する必要はありません。実際には、この環境設定ファイルの正確な場所と名前は記載されていませんので、access this file directlyに行くときには、いくつかの規則に頼らないことをお勧めします。SharedPreferencesは唯一の方法でなければなりませんこのファイルにアクセスします。

getSharedPreferences(name, mode)またはaddPreferencesFromResource(preferencesResId)を初めて呼び出すと、特定の名前の設定ファイルが作成されます。

2

ここであなたが話していることは100%わかりません。

PreferenceScreensまたはSharedPreferencesを扱うときにファイルを作成する必要はありません。これは、舞台裏のSharedPreferencesによって処理されます。あなたが最初にPreference画面で値を設定したときにそれが起こると思いますが、私は正直にはわかりません。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
String username = preferences.getString("username", "defaultvalue"); 
String password = preferences.getString("password", "defaultvalue"); 

あなたのPreferenceScreenのS​​haredPreferencesが設定されると、そのコードはSharedPreferencesを取得します。設定されていない場合は、デフォルト値を使用します。

+1

ありがとうございます。私は共有された環境設定ファイルが最初に作成された時:アプリケーションがインストールされているとき、 またはしばらくしてからですか?後で、いつ? – Smitha

+0

私はそれがPreferenceScreenが初めて表示されたとき、またはPreferenceScreenの項目が最初にユーザによって設定されたときに作成されると信じています。私が前に言ったように、私はそれについて完全には分かっていません。 – Knossos

+0

ええ..私はあなたが正しいと思います! – Smitha

-4

あなたはonCreateOptionMenuに嗜好活動の意図を設定する必要があります。

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 

    return super.onCreateOptionsMenu(menu); 
} 


public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case R.id.setting: 
      startActivity(new Intent(this,Settingpage.class)); 
      Toast.makeText(this, "setting clicked", Toast.LENGTH_LONG).show(); 
      break; 
    } 
    return true; 
} 
+0

これは質問とは何の関係もないようです。 –

0

他のコメントで述べたように共有設定が/data/data/appname/shared_prefs/prefs_name.xml

0

の下に作成でしょう、あなたは直接、共有設定ファイルと対話することは決してないだろう。 SharedPreferencesオブジェクトを使用して、値を読み書きします。 Context.getSharedPreferences()メソッドは、最初の引数(対話したい共有環境設定ファイルの名前)として文字列を取り、SharedPreferencesオブジェクトを返します。 documentation for the getSharedPreferences() method:

によると、この名前の設定ファイルが存在しない場合、それはあなたがエディタ(SharedPreferences.editを())を取得したときに作成して変更(Editor.commitを())コミットされます。

共有設定ファイルが作成されたときです。 SharedPreferencesオブジェクトを返す他のメソッドは、異なるコンテキストで同じことをやっているだけです。例えば

Activity.getPreferences()方法

は、単純に好みの名前として、このアクティビティのクラス名を渡すことによって基礎となるgetSharedPreferences(文字列、int)メソッドを呼び出します。

関連する問題