我有带有不同字符串的ArrayList。我想每天从这个 ArrayList 中选择一个随机字符串并将其显示在 TextView 中。我按照此链接中给出的说明进行操作:display a random string in textview once a day for java and android studio然而有些事情是错误的。 首先,我在 textView 中设置初始文本。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainscreen);
TextView textview = (TextView) findViewById(R.id.firsttask);
textview.setText("Z1");
然后我创建 2 个日期:CurrentDate 始终应显示给定时间。 dateTime 是存储在 SharedPreferences 中的日期。首先,CurrentDate 和 dateTime 是相同的。然后,第二天日期不相等,因此应更新文本并保存日期时间,以便日期相等。
Calendar c= Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String currentDate= df.format(c.getTime());
String dateTime = df.format(c.getTime());
saveDate();
loadDate();
if(!(dateTime.equals(currentDate))){
updateList1();
saveDate();
}
public void saveDate (){
SharedPreferences prefs = getApplicationContext().getSharedPreferences(MY_PREFS_DATE, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("date", dateTime);
editor.apply();
}
public void loadDate (){
SharedPreferences prefs = getApplicationContext().getSharedPreferences(MY_PREFS_DATE, Context.MODE_PRIVATE);
dateTime = prefs.getString("date","default value");
}
public void updateList1 (){
ArrayList<String> task1 = new ArrayList<String>();
task1.add("t1");
task1.add("t2");
task1.add("z3");
task1.add("z4");
Random r = new Random();
task = task1.get(r.nextInt(task1.size()));
TextView textview = (TextView) findViewById(R.id.firsttask);
textview.setText(task);
}
此代码不起作用,因为一天后,文本未更新。它仍然显示“Z1”。我对编程很陌生,我将不胜感激任何帮助。
最佳答案
它不起作用,因为当您运行此代码时,您首先运行 saveDate();
然后运行 loadDate();
这将使您的值相等。先加载然后保存,它应该按预期工作;
关于java - 每天更新随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40640401/