带有 EditText 编号的 SharedPreferences
SharedPreferences with EditText Number
我只想保存用户在 EditText 中设置的任何卡路里数。我已经尝试了很长时间来实现保存的首选项。
这个卡路里数字将传递给另一个 activity,我只想让这个值保持在那里,所以如果你切换活动或 exit/enter 应用程序,这个数字会保留。
你会看到我对代码应该是什么的猜测,在 them.Currently 前面有几个撇号,没有它构建的撇号,但甚至在开始之前就出错了。
求解的时候能不能直接加到代码里?我可能完全搞砸了所有这些的位置。 (保存按钮也可以)谢谢!
public class Settings extends ActionBarActivity {
//public static final String MY_PREFS_NAME = "MyPrefsFile";
EditText calorieSet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
//SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
//String calValue = sharedPreferences.getString("calValue", "default");
//calorieSet.setText( calValue );
}
public void onClick(View view) {
Intent i = new Intent(this, MainActivity.class);
final EditText calorieSet = (EditText) findViewById(R.id.calorieSet);
String userCals= calorieSet.getText().toString();
i.putExtra("calorieSet",userCals );
if (userCals == null || userCals.equals("")) {
Toast.makeText(this, "Please enter a calorie number", Toast.LENGTH_SHORT).show();
return;
}
//SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
//SharedPreferences.Editor editor = sharedPreferences.edit();
//editor.putString("calValue", calorieSet.getText().toString());
//editor.commit();
startActivity(i);
}
您需要在 onCreate()
函数中初始化 calorieSet
EditText
变量,然后再设置文本值:
public class Settings extends ActionBarActivity {
public static final String MY_PREFS_NAME = "MyPrefsFile";
EditText calorieSet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
// add this line:
calorieSet = (EditText) findViewById(R.id.calorieSet);
SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String calValue = sharedPreferences.getString("calValue", "default");
calorieSet.setText( calValue );
}
public void onClick(View view) {
Intent i = new Intent(this, MainActivity.class);
// This line not necessary as you have already set the variable in onCreate():
//final EditText calorieSet = (EditText) findViewById(R.id.calorieSet);
String userCals= calorieSet.getText().toString();
i.putExtra("calorieSet",userCals );
if (userCals == null || userCals.equals("")) {
Toast.makeText(this, "Please enter a calorie number", Toast.LENGTH_SHORT).show();
return;
}
SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("calValue", calorieSet.getText().toString());
editor.commit();
startActivity(i);
}
如果您遇到这样的错误,请检查 LogCat,它会提示您出了什么问题(例如 NullPointerException)以及发生错误的代码行。或者使用调试器单步调试。
我只想保存用户在 EditText 中设置的任何卡路里数。我已经尝试了很长时间来实现保存的首选项。
这个卡路里数字将传递给另一个 activity,我只想让这个值保持在那里,所以如果你切换活动或 exit/enter 应用程序,这个数字会保留。
你会看到我对代码应该是什么的猜测,在 them.Currently 前面有几个撇号,没有它构建的撇号,但甚至在开始之前就出错了。
求解的时候能不能直接加到代码里?我可能完全搞砸了所有这些的位置。 (保存按钮也可以)谢谢!
public class Settings extends ActionBarActivity {
//public static final String MY_PREFS_NAME = "MyPrefsFile";
EditText calorieSet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
//SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
//String calValue = sharedPreferences.getString("calValue", "default");
//calorieSet.setText( calValue );
}
public void onClick(View view) {
Intent i = new Intent(this, MainActivity.class);
final EditText calorieSet = (EditText) findViewById(R.id.calorieSet);
String userCals= calorieSet.getText().toString();
i.putExtra("calorieSet",userCals );
if (userCals == null || userCals.equals("")) {
Toast.makeText(this, "Please enter a calorie number", Toast.LENGTH_SHORT).show();
return;
}
//SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
//SharedPreferences.Editor editor = sharedPreferences.edit();
//editor.putString("calValue", calorieSet.getText().toString());
//editor.commit();
startActivity(i);
}
您需要在 onCreate()
函数中初始化 calorieSet
EditText
变量,然后再设置文本值:
public class Settings extends ActionBarActivity {
public static final String MY_PREFS_NAME = "MyPrefsFile";
EditText calorieSet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
// add this line:
calorieSet = (EditText) findViewById(R.id.calorieSet);
SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String calValue = sharedPreferences.getString("calValue", "default");
calorieSet.setText( calValue );
}
public void onClick(View view) {
Intent i = new Intent(this, MainActivity.class);
// This line not necessary as you have already set the variable in onCreate():
//final EditText calorieSet = (EditText) findViewById(R.id.calorieSet);
String userCals= calorieSet.getText().toString();
i.putExtra("calorieSet",userCals );
if (userCals == null || userCals.equals("")) {
Toast.makeText(this, "Please enter a calorie number", Toast.LENGTH_SHORT).show();
return;
}
SharedPreferences sharedPreferences = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("calValue", calorieSet.getText().toString());
editor.commit();
startActivity(i);
}
如果您遇到这样的错误,请检查 LogCat,它会提示您出了什么问题(例如 NullPointerException)以及发生错误的代码行。或者使用调试器单步调试。