Java 如何使用对象参数创建片段?
我想创建一个片段,并将复杂类型(MyClass)作为其参数。Java 如何使用对象参数创建片段?,java,android,android-fragments,android-activity,Java,Android,Android Fragments,Android Activity,我想创建一个片段,并将复杂类型(MyClass)作为其参数。 政府并没有真正提到这一点。我能够找到一些带有Bundle的示例,但这些示例只包含简单的参数,如String和Integer,您最好的选择可能是序列化复杂类并在片段中再次反序列化它 大概是 bundle.putString("object_key", gson.toJson(yourClassInstance)); 然后用 Type yourClassType = new TypeToken<YourClas
政府并没有真正提到这一点。我能够找到一些带有
Bundle
的示例,但这些示例只包含简单的参数,如String
和Integer
,您最好的选择可能是序列化复杂类并在片段中再次反序列化它
大概是
bundle.putString("object_key", gson.toJson(yourClassInstance));
然后用
Type yourClassType = new TypeToken<YourClass>() {}.getType();
YourClass yourClassInstance = gson.fromJson(bundle.getString("object_key"), yourClassType);
有关更多信息,请参见您的最佳选择可能是序列化复杂类并在片段中再次反序列化它 大概是
bundle.putString("object_key", gson.toJson(yourClassInstance));
然后用
Type yourClassType = new TypeToken<YourClass>() {}.getType();
YourClass yourClassInstance = gson.fromJson(bundle.getString("object_key"), yourClassType);
有关更多信息,请参见您可以创建一个名为
getInstance()
或createInstance()
的静态方法,或者创建具有某些值的片段
Java版本:
public static MyFragment newInstance(int arg) {
Bundle args = new Bundle();
args.putInt("ARG", arg);
MyFragment fragment = new MyFragment();
fragment.setArguments(args);
return fragment;
}
Kotlin版本:
class MyFragment : Fragment() {
companion object {
fun newInstance(arg: Int): MyFragment {
val args = Bundle()
args.putInt("ARG", arg)
val fragment = MyFragment()
fragment.arguments = args
return fragment
}
}
}
我能够找到一些Bundle的示例,但这些示例只包含
简单参数,如字符串和整数
要在包中传递自定义对象,可以使用make-your-class或。对于Parcelable,您可以使用方法将对象存储在Bundle中
对于Android中的Parcelable
和Serializable
,请检查
您将在Android Studio中找到一些插件,这些插件将自动为您的类生成Parcelable
实现代码
另一种方法是使用将对象转换为字符串,并将该字符串放入捆绑包中
对于Gson
check,您可以创建一个名为getInstance()
或createInstance()
的静态方法,或者任何您喜欢的用于创建具有某个值的片段的方法
Java版本:
public static MyFragment newInstance(int arg) {
Bundle args = new Bundle();
args.putInt("ARG", arg);
MyFragment fragment = new MyFragment();
fragment.setArguments(args);
return fragment;
}
Kotlin版本:
class MyFragment : Fragment() {
companion object {
fun newInstance(arg: Int): MyFragment {
val args = Bundle()
args.putInt("ARG", arg)
val fragment = MyFragment()
fragment.arguments = args
return fragment
}
}
}
我能够找到一些Bundle的示例,但这些示例只包含
简单参数,如字符串和整数
要在包中传递自定义对象,可以使用make-your-class或。对于Parcelable,您可以使用方法将对象存储在Bundle中
对于Android中的Parcelable
和Serializable
,请检查
您将在Android Studio中找到一些插件,这些插件将自动为您的类生成Parcelable
实现代码
另一种方法是使用将对象转换为字符串,并将该字符串放入捆绑包中
对于Gson
检查