我有两个班级,一个班级正在减轻体重,然后在另一个班级/活动中,我想要一个日志,该日志将重量与日期和时间一起附加,然后换行并显示下一个重量。这样,用户就可以跟踪他们的每日体重变化。
问题是我是Java的新手,很明显地陷入了一个愚蠢的问题。每次尝试附加时,它都会被覆盖。我可能需要保存然后添加它?也许?我尝试了几种不同的方法,但没有一种方法能很好地工作。
这是Java的第三天。抱歉。
试图创建一个使用共享首选项保存的列表。做错了还是没用。还尝试仅调用权重并附加权重,但是它会覆盖所有权重。
我的日志记录活动:
public class LogActivity extends AppCompatActivity {
TextView logger;
//TextView more;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_log);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Button back = findViewById(R.id.btnBack);
logger = findViewById(R.id.txtLog);
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
SharedPreferences log = getSharedPreferences("MyPrefsFile", 0);
//Float value = log.getFloat("floatingLog",0);
Float value = log.getFloat("weight", 0);
//more.append(logger + "Weight: " + value.toString() + " at: " + dateFormat.format(date) + "\n");
logger.append("Weight: " + value.toString() + " at: " + dateFormat.format(date) + "\n");
// Adding back button
back.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v){
Intent i = new Intent(getApplicationContext(),MainActivity.class);
startActivity(i);
}
});
// SharedPreferences settings7 = getSharedPreferences("PREFS",0);
// String wordsString = settings7.getString("words","");
// String[] itemWords = wordsString.split(",");
// List<String> items = new ArrayList<String>();
// for (int i = 0; i < itemWords.length; i++){
// items.add(itemWords[i]);
// }
// for (int i = 0; i < items.size(); i++){
// Log.d("list", items.get(i));
// }
}
}
这是在我的ProfileActivity中从此处获取共享首选项的方法:
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((TextView) findViewById(R.id.txtWeight)).setText(findViewById(R.id.txtNewWeight).toString());
floatingLog = weight.toString();
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
floatingWeight = Float.valueOf(newWeight.getText().toString());
editor.putString("floatingLog", floatingLog);
editor.putFloat("weight", floatingWeight);
editor.apply();
editor.commit();
weight.setText(String.valueOf(floatingWeight));
答案 0 :(得分:0)
您好,欢迎光临!
实际上,在TextView中,您可以通过TextView#getText()
访问当前值,然后您可以类似地使用TextView#setText(String text)
来更新文本值
所以您需要编写如下内容:
String currentText = logger.getText();
String updatedText = currentText + "Weight: " + value.toString() + " at: " + dateFormat.format(date) + "\n";
logger.setText(updatedText)
塔达!
更新
我认为您的问题在于如何将记录保存在sharedPrefs
中
在这条线
editor.putFloat("weight", floatingWeight);
这部分将覆盖现有值,
我想到的最简单的方法是,您无需创建这样的重量,而是创建一个权重数组并每天附加到权重末尾并存储该数组。
如果您为此使用数据库,那么它将变得更好。
要使用数据库,请查看Android官方orm Android Room,它非常简单明了