Java 如何在Andorid Studio中序列化/打包对
我正在尝试从主活动启动一个新活动,新活动不需要来自上一个活动的信息,但是它会将一些信息发送回主活动,但我尚未实现。 现在我觉得很奇怪的是,我的主机以前是这样工作的Java 如何在Andorid Studio中序列化/打包对,java,android,Java,Android,我正在尝试从主活动启动一个新活动,新活动不需要来自上一个活动的信息,但是它会将一些信息发送回主活动,但我尚未实现。 现在我觉得很奇怪的是,我的主机以前是这样工作的 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.maintemp); ArrayList<Pair<String, Int
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
ArrayList<Pair<String, Integer>> list = new ArrayList<>();
//Add stuff to the array
Bundle bundle = new Bundle();
bundle.putSerializable("list", list);
FooFragment fooFrag = new FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_fragment, fooFrag)
.commit();
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
ArrayList=新建ArrayList();
//向数组中添加内容
Bundle=新Bundle();
bundle.putSerializable(“list”,list);
FooFragment fooFrag=新的FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_片段,fooFrag)
.commit();
}
这正是我们想要的。
现在我想在满足某些条件的情况下开始一项活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
if(/*Some conditions*/){
startActivity(new Intent(this, Bar.class));
}
ArrayList<Pair<String, Integer>> list = new ArrayList<>();
//Add stuff to the array
Bundle bundle = new Bundle();
bundle.putSerializable("list", list);
FooFragment fooFrag = new FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_fragment, fooFrag)
.commit();
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
如果(/*某些条件*/){
startActivity(新的意图(这个,Bar.class));
}
ArrayList=新建ArrayList();
//向数组中添加内容
Bundle=新Bundle();
bundle.putSerializable(“list”,list);
FooFragment fooFrag=新的FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_片段,fooFrag)
.commit();
}
当我满足if条件且Bar活动开始时,IDE/编译器抱怨:
包裹:无法封送值对
现在,活动根本不需要配对列表,但不知何故,它抱怨它不可打包
为了解决这个问题,我尝试创建一个只包含Pair列表的类,并使该类可序列化,然后只绑定该类
这就产生了错误
Parcelable在写入可序列化对象时遇到IOException
我想这又是因为无法序列化这对
那么,有没有一种方法可以让安卓的配对软件包化呢?还是我的错误在哪里
那么,有没有一种方法可以让安卓的配对软件包化呢
你不能。您可以在bundle中分别传递信息(第一个和第二个)或者创建您自己的
Pair
类,实现Parcelable使用HasMap
相反,它也有键值对,可以通过Serializable或Parcelable在活动之间传递以保存项目订单使用LinkedHashMap您知道为什么我可以将其绑定到片段视图中吗,但当我开始一项新的活动时,这就不再有效了?