在活动之间传递自定义类实例

Fea*_*hal -1 serialization android parcelable android-intent

我有一个自定义类'Game',我在活动代码的顶部初始化.然后我去另一个活动,通常我通过arraylists等但我想转移到我的自定义类.....

我的自定义类'游戏'是一堆字符串和arraylists与getter和setter mehtods.

我得到了

游戏不是可分割或可序列化的对象

我尝试将其添加到意图时出错.我能在这做什么?

//Init Instance of Game class
Game newGame = new Game();
Run Code Online (Sandbox Code Playgroud)

设置我的听众.它适用于

//Setup onclick listeners
text.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent i = new Intent(this_Activity.this, next_Activity.class);
        i.putExtra("players", myList);
        i.putExtra("newGame", (Parcelable) newGame);
        startActivityForResult(i, 0);
    }
});
Run Code Online (Sandbox Code Playgroud)

Art*_*gin 5

此外,您的类Game可能实现接口Serializable:

public class Game implements Serializable {
    ...
}
Run Code Online (Sandbox Code Playgroud)

您必须在第一个活动中更改侦听器:

text.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent i = new Intent(this_Activity.this, next_Activity.class);
        i.putExtra("players", myList);
        i.putExtra("newGame", newGame);
        startActivityForResult(i, 0);
    }
});
Run Code Online (Sandbox Code Playgroud)

并更改方法onCreatenext_Activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Game newGame = (Game) getIntent().getExtras().getSerializable("newGame");
}
Run Code Online (Sandbox Code Playgroud)