0

在我的应用程序中,当用户第一次进入时,他可以添加两个日期,应用程序进行天数计算。然后,此结果写入数据库并打印在我的主 Activity(称为 arxiki.class)的 textView 中。我希望应用程序记住这个结果并在用户每次进入主要活动时打印它。

正如我所做的那样,每次用户更改活动或关闭应用程序时,下次应用程序再次要求他输入日期并在我的数据库中创建新数据时。我怎样才能始终获得第一个结果?谢谢

我保存日期结果的代码是:

DbXronia entry_add = new DbXronia(arxiki.this);
            entry_add.open();
            entry_add.createEntry_xronia(meres);
            entry_add.close();
4

2 回答 2

1

正如我所做的那样,每次用户更改活动或关闭应用程序时,下次应用程序再次要求他输入日期并在我的数据库中创建新数据时。我怎样才能始终获得第一个结果?谢谢

因此,您只想向用户询问日期一次(仅在应用程序启动时第一次)。这个“算法”不应该是棘手的。当用户输入日期和值被写入保存状态“日期已存储”的数据库时,您需要一些机制。

你可以用它来达到你的目标SharedPreferences。将值写入数据库后,您将“此操作”保存到 SharedPreferences 中,然后当用户下次启动应用程序时,只需创建将包装您的操作的条件。

伪代码:

// saving action
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().putBoolean("isInserted", true);

// retrieve value
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean isInserted = prefs.getBoolean("isInserted", false);

if (!isInserted) {
   // user can add dates
}
else {
  // do your stuff
}
于 2013-03-23T09:40:56.590 回答
0

你在后端使用什么样的数据库——SQLite?

如果您使用 SQLite,您可以通过自动递增的*_id*列对从数据库中获取的数据进行排序。作为替代方案,您可以在插入新条目时存储到数据库中的某种时间戳。查询看起来像:

Cursor c = db.query (true, table, new String[]{dataColumn}, null, null, null, null, "_id DESC", "LIMIT 1")
if (c.moveToFirst()) {
   String result = c.getString(0);
}
c.close();
于 2013-03-22T21:48:21.760 回答