Java 将多个对象传递给另一个活动
我正在尝试创建一个非常基本的应用程序,它基本上可以跟踪现实生活中玩纸牌游戏的4名玩家的分数。我的想法是为每个玩家创建一个类“Player”的实例,目前只包含变量“name”和“score”。我按照本文()的说明,在“Player”类中实现了Parcelable: 当我在第一个活动中按下按钮时,“StartName”将被触发,第二个活动中应显示球员姓名和分数: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
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");
}
}