动态设置日期到标签

时间:2016-05-03 05:41:12

标签: java android date android-fragments tabs

我正在尝试将当前日期显示在我的标签上,但左边的日期并没有减少一个。我将今天的日期设置为OneFragment,然后在TwoFragment中将日期增加1。这部分工作正常,但是当我试图从今天开始上一个日期出现在ThreeFragment中时,它没有按预期工作。

当前:ThreeFragment(2016年5月1日| 2016年4月30日)OneFragmet(2016年5月2日)TwoFragment(2016年5月3日| 2016年5月4日)

我想要ThreeFragment标签显示这样的日期:(2016年4月30日| 2016年5月1日)

我做错了什么?任何帮助将不胜感激,谢谢。

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    Date today = new Date();
    Calendar cal = Calendar.getInstance();
    DateFormat dateFormat1 = new SimpleDateFormat("EEEE MMM dd, yyyy", Locale.getDefault());
    String todate = dateFormat1.format(today.getTime());

    for(int j = 2; j >= 0; j--) {
        Date decr = addDays(today, -1);
        String yesterday = dateFormat1.format(decr.getTime());
        adapter.addFragment(new ThreeFragment(), yesterday);
    }

    adapter.addFragment(new OneFragment(), todate);

    for(int i = 0; i < 2; i++) {
        cal.add(Calendar.DAY_OF_MONTH, 1);
        String tomo = dateFormat1.format(cal.getTime());
        adapter.addFragment(new TwoFragment(), tomo);

    }

    viewPager.setAdapter(adapter);
}

public static Date addDays(Date d, int days)
{
    d.setTime(d.getTime() + days * 1000L * 60L * 60L * 24L);
    return d;
}

enter image description here

2 个答案:

答案 0 :(得分:1)

就像ccsnoopy所说的那样,但是addDays方法对今天的变量有一个副作用(这就是为什么它之前几乎有效),所以试试吧。

for(int j = 2; j > 0; j--) {
    Date decr = addDays(new Date(), -j);
    String yesterday = dateFormat1.format(decr.getTime());
    adapter.addFragment(new ThreeFragment(), yesterday);
}

答案 1 :(得分:0)

尝试将第一个循环更改为:

for(int j = 2; j > 0; j--) {
    Date decr = addDays(today, -j);
    String yesterday = dateFormat1.format(decr.getTime());
    adapter.addFragment(new ThreeFragment(), yesterday);
}