私はAndroidの初心者です。文字列を永続的に保存しようとしています。どのように設定画面から値を永久に保存できますか?
PreferenceActivity
からこの文字列を取得し、TextView
のテキストを更新したいとします。
私は永続的な記憶のために利用可能なオプションについては読んでいた:http://developer.android.com/guide/topics/data/data-storage.html#pref
私はSharedPreferences
を使用することを試みたが、それは、それがどのように動作するかを上の私にとっては非常に不明です。
私は非常に簡単なテストアプリケーションを作成しました。
MainActivity.java
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/* method that starts preferences */
public void openPreferences(View v) {
Intent i = new Intent(this, Preferences.class);
startActivity(i);
}
@Override
protected void onStart(){
super.onStart();
// Get preferences
SharedPreferences preferences = getPreferences(0);
String name = preferences.getString("name","Empty string!");
// Create a RemoteViews layout
RemoteViews views = new RemoteViews(getPackageName(),R.layout.main);
// set new text for labels
views.setTextViewText(R.string.name, name);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences preferences = getPreferences(0);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name", "This is a test");
// Commit the edits!
editor.commit();
}
}
Preferences.java
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
のAndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Preferences"
android:label="@string/preferences_title">
</activity>
</application>
TextView
決して変更のテキスト、それは常に私がのstrings.xmlに設定された値に設定されています。
私は何が間違っているのか理解してもらえますか?
ありがとうございました。
を私はsharedpreferencesに関連したコードが正しいと思います。リモートビューのリフレッシュに関係するかもしれません。 preferences.getStringを記録しましたか?それは間違った価値を示していますか? – nandeesh