Я попытался отправить значение int из текущей активности в новую, вот части в текущей деятельности.Как я могу передать некоторое значение между действиями в Android
dialog.setPositiveButton("4 players", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Start a new game!", Toast.LENGTH_SHORT).show();
// need send extra value to PlayerBoardActivity to decide how many buttons I should have
Intent intent = new Intent(MainActivity.this,
PlayBoardActivity.class);
intent.putExtra(PLAYER_NO, 4);
startActivity(intent);
}
});
dialog.setNegativeButton("2 players", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Start a new game!", Toast.LENGTH_SHORT).show();
// need send extra value to PlayerBoardActivity to decide how many buttons I should have
Intent intent = new Intent(MainActivity.this,
PlayBoardActivity.class);
intent.putExtra(PLAYER_NO, 2);
startActivity(intent);
}
});
Проблема заключается в том, что я создаю 2 файла макета для нового действия. Например, когда я нажимаю отрицательную кнопку в диалоговом окне, я хочу, чтобы новая активность (PlayerBoardActivity в моем случае) загружала файл макета, соответствующий значению, которое я отправил «intent.putExtra (PLAYER_NO, 2)»;
код в новой деятельности
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final String PLAYER_NO = "the number of players";
Bundle b = getIntent().getExtras();
int a = b.getInt(PLAYER_NO);
if (b != null) {
if (a == 2) {
setContentView(R.layout.two_player);
}
if(a == 4){
setContentView(R.layout.four_player);
}
}
}
Я хочу знать, могу ли я загрузить другой файл макета таким образом? Или есть лучшее решение для моей проблемы.
Благодарим вас заблаговременно.
И почему бы вам просто не реализовать две разные «Деятельности»? Если у вас два разных макета, вы должны реализовать их в двух разных компонентах. Если вы это сделаете, вам больше не нужно отправлять значение вместе с «Intent», вам просто нужно запустить две разные «Деятельности», на основе которых нажата кнопка «Button». –
Offtopic: вы должны сделать нулевую проверку перед использованием переменной 'b' в' b.getInt'. –