簡単なJAVAカードゲームを作成しました(私が思っていたもの)。JAVAでは、ゲームはレイアウト(フレーム)をロードし、各プレーヤーのカード所有者の画像のような正方形で構成されるImageButtonを表示します。カード所有者は、デッキからランダムなカードを1枚ずつ入力します。
そのため、AndroidのonCreateメソッドでは、最初のレイアウトはカードホルダーの画像を含むカードで構成され、次にonCreateメソッドでメソッドを実行してカードを配ります。私が抱えている問題は、初期レイアウトがまったく表示されないことです。表示されるのは、カード所有者がすでに入力されている最終的なレイアウトです。個別に処理されているため、プログラムには表示されません。おそらくAsyncTaskを実行する必要があると思いましたが、dealメソッドには、それを必要とするような「主要な」命令はありません。
私はAndroid開発に比較的慣れていないので、非常に単純なものが元のレイアウトをハングアップさせるのではないかと思いますが、onCreateメソッドから呼び出されるメソッドではない場合、メインのアプリケーション命令はどこに行きますか?元のレイアウトを表示してから、カードを1枚ずつ更新してUIスレッドを続行するだけの簡単な方法ではないのはなぜですか?
アップデート:
残念ながら、それでも機能しません。私のonCreateは次のようになります。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
player1Card1B = (ImageButton) findViewById(R.id.p1C1Bref);
player1Card2B = (ImageButton) findViewById(R.id.p1C2Bref);
player1Card3B = (ImageButton) findViewById(R.id.p1C3Bref);
player2Card1B = (ImageButton) findViewById(R.id.p2C1Bref);
player2Card2B = (ImageButton) findViewById(R.id.p2C2Bref);
player2Card3B = (ImageButton) findViewById(R.id.p2C3Bref);
player3Card1B = (ImageButton) findViewById(R.id.p3C1Bref);
player3Card2B = (ImageButton) findViewById(R.id.p3C2Bref);
player3Card3B = (ImageButton) findViewById(R.id.p3C3Bref);
player4Card1B = (ImageButton) findViewById(R.id.p4C1Bref);
player4Card2B = (ImageButton) findViewById(R.id.p4C2Bref);
player4Card3B = (ImageButton) findViewById(R.id.p4C3Bref);
newDeckCard = (ImageButton) findViewById(R.id.newCardDeckBref);
discardDeckCard = (ImageButton) findViewById(R.id.discardCardDeckBref);
knockButton = (ImageButton) findViewById(R.id.knockBref);
player1Card1B.setOnClickListener(this);
player1Card2B.setOnClickListener(this);
player1Card3B.setOnClickListener(this);
newDeckCard.setOnClickListener(this);
discardDeckCard.setOnClickListener(this);
knockButton.setOnClickListener(this);
}
and my onStart like this:
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
shuffle();
deal();
}
「メイン」と表示された白い画面が表示され、最終的にカードはすでに入力されていることが示されます。onCreateメソッドで読み取られるプレースホルダーも取得しません。Deal()メソッドを削除すると、プレースホルダーカードが表示されます。戻すと、プレースホルダーカードは表示されず、配られたカードだけが表示されます。