Java 将多个对象传递给另一个活动

Java 将多个对象传递给另一个活动,java,android,android-intent,android-activity,parcelable,Java,Android,Android Intent,Android Activity,Parcelable,我正在尝试创建一个非常基本的应用程序,它基本上可以跟踪现实生活中玩纸牌游戏的4名玩家的分数。我的想法是为每个玩家创建一个类“Player”的实例,目前只包含变量“name”和“score”。我按照本文()的说明,在“Player”类中实现了Parcelable: 当我在第一个活动中按下按钮时,“StartName”将被触发,第二个活动中应显示球员姓名和分数: public class ScoreScreen extends AppCompatActivity { @Override

我正在尝试创建一个非常基本的应用程序,它基本上可以跟踪现实生活中玩纸牌游戏的4名玩家的分数。我的想法是为每个玩家创建一个类“Player”的实例,目前只包含变量“name”和“score”。我按照本文()的说明,在“Player”类中实现了Parcelable:

当我在第一个活动中按下按钮时,“StartName”将被触发,第二个活动中应显示球员姓名和分数:

public class ScoreScreen extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_score_screen);

        Player player1= getIntent().getParcelableExtra("EXTRA_PLAYER_1");

        String namePlayer1 = player1.getPlayerName();
        TextView textView1 = (TextView) findViewById(R.id.textView1);
        textView1.setText(namePlayer1);

        int scorePlayer1 = player1.getPlayerScore();
        TextView textView5 = (TextView) findViewById(R.id.textView5);
        textView5.setText(scorePlayer1);
    }
}
因此,当我运行此操作时,当我按下按钮从第一个活动转到第二个活动时,emulator中会显示以下错误消息: 游戏停止了 再次打开应用程序

出什么事了?parcelable是正确的方法还是应该使用serializable?我怎样才能不仅传递1个对象,而且传递4个对象给第二个活动


谢谢你的帮助,我真的被困在这里了。。。谢谢

我通常就是这样做的

public void startGame(View view) {
    EditText editText1 = (EditText) findViewById(R.id.editText1);
    String namePlayer1 = editText1.getText().toString();
    int scorePlayer1 = 0;
    Player player1 = new Player(namePlayer1, scorePlayer1);
    EditText editText2 = (EditText) findViewById(R.id.editText2);
    String namePlayer2 = editText2.getText().toString();
    int scorePlayer2 = 0;
    Player player2 = new Player(namePlayer2, scorePlayer2);

    Intent intent = new Intent(this, ScoreScreen.class);
    Bundle bundle = new Bundle();
    bundle.putParcelable("EXTRA_PLAYER_1", player1);
    bundle.putParcelable("EXTRA_PLAYER_2", player2);
    intent.putExtras(bundle);
    startActivity(intent);
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    Player player1;
    Player player2;
    if (getIntent().getExtras() != null) {
        player1 = getIntent().getExtras().getParcelable("EXTRA_PLAYER_1");
        player2 = getIntent().getExtras().getParcelable("EXTRA_PLAYER_2");
    }
}

如果要传递多个内容,请多次调用
putExtra
。。。在任何情况下,您都应该提供日志
public class ScoreScreen extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_score_screen);

        Player player1= getIntent().getParcelableExtra("EXTRA_PLAYER_1");

        String namePlayer1 = player1.getPlayerName();
        TextView textView1 = (TextView) findViewById(R.id.textView1);
        textView1.setText(namePlayer1);

        int scorePlayer1 = player1.getPlayerScore();
        TextView textView5 = (TextView) findViewById(R.id.textView5);
        textView5.setText(scorePlayer1);
    }
}
public void startGame(View view) {
    EditText editText1 = (EditText) findViewById(R.id.editText1);
    String namePlayer1 = editText1.getText().toString();
    int scorePlayer1 = 0;
    Player player1 = new Player(namePlayer1, scorePlayer1);
    EditText editText2 = (EditText) findViewById(R.id.editText2);
    String namePlayer2 = editText2.getText().toString();
    int scorePlayer2 = 0;
    Player player2 = new Player(namePlayer2, scorePlayer2);

    Intent intent = new Intent(this, ScoreScreen.class);
    Bundle bundle = new Bundle();
    bundle.putParcelable("EXTRA_PLAYER_1", player1);
    bundle.putParcelable("EXTRA_PLAYER_2", player2);
    intent.putExtras(bundle);
    startActivity(intent);
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    Player player1;
    Player player2;
    if (getIntent().getExtras() != null) {
        player1 = getIntent().getExtras().getParcelable("EXTRA_PLAYER_1");
        player2 = getIntent().getExtras().getParcelable("EXTRA_PLAYER_2");
    }
}