現在のアクティビティから新しいアクティビティに int 値を送信しようとしました。これが現在のアクティビティのパーツです。
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);
}
}
}
この方法で別のレイアウト ファイルをロードできるかどうか知りたいですか? または、私の問題に対するより良い解決策がありますか。
よろしくお願いします。