通过bundle传递TIME对象

sub*_*n90 3 datetime android bundle android-intent

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

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

DATE date=new DATE();
Run Code Online (Sandbox Code Playgroud)

Chr*_*lay 13

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

MyFragment fragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(MyFragment.DATE_KEY, new Date());
fragment.setArguments(bundle);
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)


Ric*_*ick 8

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

Intent mIntent = new Intent(ActivityA.this, ActivityB.class);
mIntent.putLong(KEY, getTimeMilliseconds());
startactivity(mIntent);
Run Code Online (Sandbox Code Playgroud)

然后在ActivityB的onCreate中:

Bundle mBundle = getItent().getExtras();
Long time = mBundle.getLong(KEY);
Run Code Online (Sandbox Code Playgroud)

注意 :

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

如果要将其应用于自定义对象,则应使该对象实现Parcelable.