Java 在android中使用一个按钮按顺序显示3行不同文本中的1行,然后在第二天显示不同的文本
我正在尝试制作一个显示一行文本的应用程序,下面有一个按钮。当您按下“下一步”按钮时,它将在第一行所在的位置显示第二行文本,然后显示第三行文本,之后它将返回到第一行。当明天来临时,我希望它显示一组新的文本行,等等 假设我有9行文字。在第一天,我希望按钮自动显示第1行,然后在按钮上按第2行,然后按第3行,然后循环回到第1行,依此类推。在第二天,我希望它自动显示第4行,然后在按钮上按第5行,然后按第6行。第三天,第7行,第8行,第9行 到目前为止,我绝对是java的高手,所以非常感谢所有的帮助和解释Java 在android中使用一个按钮按顺序显示3行不同文本中的1行,然后在第二天显示不同的文本,java,android,button,Java,Android,Button,我正在尝试制作一个显示一行文本的应用程序,下面有一个按钮。当您按下“下一步”按钮时,它将在第一行所在的位置显示第二行文本,然后显示第三行文本,之后它将返回到第一行。当明天来临时,我希望它显示一组新的文本行,等等 假设我有9行文字。在第一天,我希望按钮自动显示第1行,然后在按钮上按第2行,然后按第3行,然后循环回到第1行,依此类推。在第二天,我希望它自动显示第4行,然后在按钮上按第5行,然后按第6行。第三天,第7行,第8行,第9行 到目前为止,我绝对是java的高手,所以非常感谢所有的帮助和解释
到目前为止,我一直在使用每月的第二天,但我真的不知道如何将其全部组合起来。有人建议使用一个包含我所有句子的数据文件,因为我希望每月更新一次行列表,而不必每个月都仔细地更新代码。你可以尝试这样的方法来检查哪一天,并根据那一天做些事情。这只是一个示例代码&可以改进。您所做的操作,如添加一行文本很容易,您只需以编程方式创建一个textview
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import java.util.Calendar;
/**
* Created by ionut.negru on 6/3/2014.
*/
public class DifferentDays extends Activity {
// Could be an enum for better performance, or something else...
private static final int
DAY_ONE = 1,
DAY_TWO = 2,
DAY_THREE = 3,
DAY_FOUR = 4,
DAY_FIVE = 5,
DAY_SIX = 6,
DAY_SEVEN = 7,
DAY_EIGHT = 8,
DAY_NINE = 9;
// Use Calendar instead of Date, because Date is deprecated
private Calendar startDate;
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (firstRun()) {
// Set first run
setFirstRun();
}
// Update the start date each time the activity is created
startDate = Calendar.getInstance();
startDate.setTimeInMillis(getStartDate());
}
@Override
protected void onResume () {
super.onResume();
int startDay = startDate.get(Calendar.DAY_OF_MONTH);
int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
final int DAY = checkDay(startDay, currentDay);
switch (startDay) {
case DAY_ONE:
// Do something for day one
break;
case DAY_TWO:
// Do something for day two
break;
case DAY_THREE:
// Do something for day three
break;
case DAY_FOUR:
// Do something for day four
break;
case DAY_FIVE:
// Do something for day five
break;
case DAY_SIX:
// Do something for day six
break;
case DAY_SEVEN:
// Do something for day seven
break;
case DAY_EIGHT:
// Do something for day eight
break;
case DAY_NINE:
// Do something for day nine
break;
default:
// current day, or other days
break;
}
}
/**
* Check if this is the first run
*
* @return {@code true} if it is the first run
*/
private boolean firstRun () {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
int lastFirstRun = prefs.getInt("last_run", 0);
return lastFirstRun < versionCode();
}
/**
* The application's version code.
*
* @return The version code
*/
private int versionCode () {
int versionCode = 1;
try {
versionCode = getPackageManager().getPackageInfo(getPackageName(),
PackageManager.GET_META_DATA).versionCode;
} catch (PackageManager.NameNotFoundException e) {
Log.e(this.getClass().getSimpleName(), e.getCause() == null ? e.getMessage()
: e.getCause().toString());
} catch (NullPointerException e) {
// Nothing to do
}
return versionCode;
}
private void setFirstRun () {
// Update the version code
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("last_run", versionCode());
editor.putLong("start_date", Calendar.getInstance().getTimeInMillis());
editor.commit();
}
private long getStartDate () {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
return prefs.getLong("start_date", 0);
}
/**
* Get the day number. Will get the difference between current day & start day.
*
* @param startDay
* @param currentDay
*
* @return
*/
private int checkDay (final int startDay, final int currentDay) {
int day;
if (startDay > currentDay) {
// something is wrong or it is current day
day = 0;
} else {
day = currentDay - startDay;
}
return day;
}
}
希望它能帮助你实现你想要的,致以最诚挚的问候。我建议,既然你是一个绝对的noob,那么你应该采取适当的步骤学习Java,至少到中级水平,然后看看Android,然后用它变得时髦起来。像这样的问题不是so的重点。太宽了。如果您有代码、错误消息和尝试修复/尝试的问题,请提出问题。感谢您提供的信息-我对java和android基本上都是新手,我目前正在通过我的课程学习java,并认为这是一个简单的开始,而且很难找到一个在线论坛来回答像noob这样的广泛问题。我不需要有人为我写所有的代码,但可以请人为我指出总体布局的正确方向,这将是最有效的,这样我就不必每月更新大量的代码。有没有一个网站可以推荐给我这个职位的人来获得这一级别的帮助?我可以告诉你,如果你正确地编写程序,除了要显示的db或文件之外,不会有任何连续的每月代码更新。从小处做起。启动并运行应用程序,显示一句话,尝试添加另一句话,以此类推。一路上,如果你遇到问题,问问题。你会发现很多问题都已经得到了回答。你们有相同的想法吗?或者你们真的为op编写了代码吗?你能进一步解释一下@BobbyDigital吗?我只是想帮助他实现他想要的目标。我介绍了他如何识别哪一天以及只初始化一次开始日期的基本想法。。。之后,他可以添加他想要的操作并进一步改进代码。我只是在5分钟内写了这篇文章,这只是为了帮助他。你可以随心所欲;我只是好奇你是否专门为回答这个问题而编写了这个代码。我不认为为一个显示出零理解或零努力的问题提供代码符合任何人的最佳利益。它会让用户和其他人提出更多糟糕的问题,而这些用户和其他人却从来没有学到任何东西。这就是你的观点。IMOH,我给了用户一个基本的想法,他如何能够检测到他在哪一天;正确初始化起始日期的方法;根据日期采取定制操作的方法;还有一个关于他如何添加/删除文本视图的想法如果他愿意,我将添加一段代码,向他展示如何实现这一点。谢谢你的输入ionut-我真的是一个彻头彻尾的傻瓜,一直在寻找一个地方来问这类问题,这个网站是我能找到的最接近我所寻找的。我甚至没有考虑过要检查它是否是第一次运行,或者检查版本,所以你肯定给了我更多的时间来查找。再次感谢您的帮助,如果您知道我可以问更多像这样的初学者一般性问题,而不是踩到别人的脚,我们将不胜感激: