2017-09-13 52 views
-2

我想创建一个简单的列表样式应用程序。我已经使用SharedPreferences成功地保存了字符串,因为我可以在日志中引用它,但是我希望这样做是为了使字符串保持附加到文本字段而不是在每次重新打开应用程序时清除(直到更改或由用户删除)。任何其他建议,将不胜感激。如何保存文本字段的响应而不清除

(MainActivity)

public void go(View view) { 

    Intent intent1 = new Intent(SecondActivity.this, myPreferences.class); 

    String passGoal1 = goal1.getText().toString(); 

    intent1.putExtra("goal1", passGoal1); 

    startActivity(intent1); 
} 

如在第一个答案引用另外实施myPreferences类。

public class myPreferences { 

    private SharedPreferences pref; 

    private SharedPreferences.Editor editor; 

    private Context context; 

    int PRIVATE_MODE = 0; 

    private static final String PREF_NAME = "MyPreferencesName"; 

    public final static String KEY_NAME = "key_value"; 

    public myPreferences(Context context) { 

     this.context = context; 

     pref = context.getSharedPreferences(PREF_NAME,PRIVATE_MODE); 

     editor = pref.edit(); 
    } 

    public void setFunction(String data) { 

     editor.putString(KEY_NAME, data); 
    } 
} 

回答

1

在您的共享偏好做出获取存储的数据并查看它每次在文本框

public class MyPreferences { 

private SharedPreferences pref; 

// Editor for Shared preferences 
private SharedPreferences.Editor editor; 

// Context 
private Context context; 

// Shared pref mode 
int PRIVATE_MODE = 0; 

// Sharedpref file name 
private static final String PREF_NAME = "MyPreferencesName"; 

public final static String KEY_NAME = "key_value"; 

public MyPreferences(Context context) { 
    this.context = context; 
    pref = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
    editor = pref.edit(); 
} 

public void setFunction(String data) { 
    editor.putString(KEY_NAME, data); 
    editor.commit(); 
} 

public String getFunction() { 
    return pref.getString(KEY_NAME, ""); 
} 
} 

而在你的活动初始化SharedPreferences并执行以下操作get函数:

private MyPreferences myPreferences; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    myPreferences = new MyPreferences(this); 

    //To set EditText data from SavedPreferences 
    textField.setText(myPreferences.getFunction()); 
} 

//To save the latest data from EditText. 
@Override 
protected void onStop() { 
    Log.d("LifeCycle", "onStop: "); 
    super.onStop(); 
    myPreferences.setFunction(editText.getText().toString()); 
} 
+0

非常感谢,但在尝试设置AppSettingsPreference类时出现错误,有什么建议? –

+0

我很高兴能够帮助你,我编辑了我的答案,再次尝试,并希望现在一切都好起来。 @Ian F. –

+0

非常感谢。最后一个问题很抱歉,我怎么能将文本框中的数据传递给这个新类?我会用一个新的意图来回传递它吗? –