Bundle.put(String, Pacelable) 与 Intent.putExtra(String, Parcelable)

Bundle.put(String, Pacelable) vs. Intent.putExtra(String, Parcelable)

谁能解释为什么 Bundle.put 不会,除了 android.os.Uri(实现 Parcelabe,Comparable)但 Intent.putExtra 会?

Uri uri = Uri.parse("some string");

Intent intent = new Intent();
intent.putExtra("key", uri); //this is ok...builds, runs, works

Bundle args = new Bundle();
args.putParcelable("key", uri); //wont build

我正在尝试为每个片段提供一个 uri 引用,以引用通过片段参数填充它的内容。这没什么大不了的,因为我将它作为字符串传递并在 Fragment 中重新解析它,但最好避免这一步。

已编辑: 上面的代码现在可以工作了。

正如 Selvin 所指出的,the Bundle class. Uri implements Parcelable; to put a Uri in a Bundle, call putParcelable() 上没有 put() 方法。