如何将日期从日历传递到另一个活动[Android]

时间:2012-08-02 03:57:22

标签: android calendar

我无法将日期从日历传递到另一个活动。这不是我想要显示的当前日期,它是用户在我编码的日历上选择的日期。
以下是我的代码。

                            @Override
                public void onClick(View view)
                {
                    String date_month_year = (String)view.getTag();
                    selectedDayMonthYearButton.setText(new StringBuilder().append("Selected:").append(date_month_year));

                    Intent k = new Intent(Calendar_Event.this, Create_Events.class);
                 startActivity(k);

                    try
                    {
                        Date parsedDate = dateFormatter.parse(date_month_year);
                        Log.d(tag, "Parsed Date: " + parsedDate.toString());
                    }
                    catch(ParseException e)
                    {
                        e.printStackTrace();
                    }
                } 


                public int getCurrentDayOfMonth()
                    {
                        return currentDayOfMonth;
                    }

                private void setCurrentDayOfMonth(int currentDayOfMonth)
                    {
                        this.currentDayOfMonth = currentDayOfMonth;
                    }
                public void setCurrentWeekDay(int currentWeekDay)
                    {
                        this.currentWeekDay = currentWeekDay;
                    }
                public int getCurrentWeekDay()
                    {
                        return currentWeekDay;
                    }

        }//end GridCellAdapter

我尝试将选中onClick的日期传递给此类链接到的下一个活动。
非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

考虑通过调用getTimeInMillis()

将日历变量转换为long
/* GetDateActivity.java */

Intent intent = new Intent();

Calendar myDate = Calendar.getInstance();
myDate.set(Calendar.YEAR, 1970);
myDate.set(Calendar.MONTH, 1);
myDate.set(Calendar.DAY_OF_MONTH, 1);

intent.putExtra("myDateKey", myDate.getTimeInMillis());
setResult(RESULT_OK, intent);
// Terminate current activity
finish();

然后,调用startActivityForResult(intent)的内部活动,即MainActivity.java

public static final int REQUEST_DATE_CODE = 777;

...

Intent i = new Intent(MainActivity.class, GetDateActivity.class);
startActivityForResult(i, REQUEST_DATE_CODE);

...

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case REQUEST_DATE_CODE:
            if (resultCode == RESULT_OK && data != null) {

                Calendar myDate = Calendar.getInstance();
                myDate.setTimeInMillis(extras.getLong("myDateKey"));

                Date date = myDate.getTime();
                SimpleDateFormat simpleDateFormatter = new SimpleDateFormat("EEE, MMM d, ''yy", Locale.getDefault());
                Log.d(tag, "Parsed Date: " + simpleDateFormatter.format(date));
           }
           break;
    }
}