通过bundle传递TIME对象

时间:2011-12-25 18:20:53

标签: android datetime android-intent bundle

如何使用Bundle ???传递TIME的实例(对象)

可能是一个简单的问题,但我需要一个精确的答案......

DATE date=new DATE();

3 个答案:

答案 0 :(得分:13)

日期是可序列化的,因此您可以使用get/putSerializable

MyFragment fragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(MyFragment.DATE_KEY, new Date());
fragment.setArguments(bundle);

MyFragment

public void onViewStateRestored(Bundle savedInstanceState) {
    super.onViewStateRestored(savedInstanceState);
    Bundle bundle = savedInstanceState != null ? savedInstanceState : getArguments();
    Date startTime = (Date) bundle.getSerializable(MyFragment.DATE_KEY);
    this.time = startTime;
}

public void onSaveInstanceState(Bundle bundle) {
    super.onSaveInstanceState(bundle);
    bundle.putSerializable(MyFragment.DATE_KEY, this.time);
}

答案 1 :(得分:8)

这段代码是近似的,因为我是从内存中写的。

Intent mIntent = new Intent(ActivityA.this, ActivityB.class);
mIntent.putLong(KEY, getTimeMilliseconds());
startactivity(mIntent);

然后在ActivityB的onCreate中:

Bundle mBundle = getItent().getExtras();
Long time = mBundle.getLong(KEY);

注意:

  

putLong / getLong可以应用于多种类型的String,int ...

     

如果要将其应用于自定义对象,则应该创建该对象   实现Parcelable。

答案 2 :(得分:2)

在Bundle中传递代表您的日期的长值,例如long time = new Date()。getTime();