0

Android 用の人気のマインスイーパ ゲームのバージョンを作成しています。プログラムでボタンを作成し、RelativeLayout に追加しようとしています。ここで非常によく似たものを見つけました:プログラムでボタンを複数行に 1 つずつレイアウトに追加するにはどうすればよいですか?

実行しようとすると、次の場所で NullPointerException が発生します。

RelativeLayout layout1 = (RelativeLayout) findViewById(R.layout.game);

コードのブロック全体は次のとおりです。

public void create() {
    RelativeLayout layout1 = (RelativeLayout) findViewById(R.layout.game);
    for(int i = 0; i < gridSize; i++) {
        if(grid[i] == 0) { //if grid pos. indicates an empty cell
            Button empty = new Button(this);
            empty.setBackgroundResource(R.drawable.emptybutton); //set background to empty
            empty.setId(i); //set id to value of i
            empty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            layout1.addView(empty); //add the button to the relativeLayout view
            //((Button) findViewById(i)).setOnClickListener(emptyListener); 
        }

ご回答ありがとうございます。

4

3 に答える 3

2

アクティビティのレイアウトxmlをsetContentView(R.layout.xxxx)?で設定しました

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game);


...

これ

 RelativeLayout layout1 = (RelativeLayout) findViewById(R.layout.game);

する必要があります

 RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.relative_id);

R.id...コントロールのマッピングに使用され、RelativeLayoutはコントロールです。

于 2012-04-10T12:12:28.067 に答える
2

コンテンツ ビューを設定していないため、空白の画面が表示されていると思います。つまり、コードは本来の機能を果たしますが、上部の「setContentView()」メソッドを削除して最後に配置し、onCreate() を閉じる前に RelativeLayout に設定する必要があります。方法!このようなもの:

public void create() {
RelativeLayout layout1 = new RelativeLayout(this);
for(int i = 0; i < gridSize; i++) {
    if(grid[i] == 0) { //if grid pos. indicates an empty cell
        Button empty = new Button(this);
        empty.setBackgroundResource(R.drawable.emptybutton); //set background to empty
        empty.setId(i); //set id to value of i
        empty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        layout1.addView(empty); //add the button to the relativeLayout view
        //((Button) findViewById(i)).setOnClickListener(emptyListener); 
     }
    }
     setContentView(layout1);
   }

また、Relativelayout の宣言を少し変更したことにも注意してください。これが役立つことを願っています。:) !

于 2012-04-25T19:58:52.977 に答える
0

xml ファイル名ではなく、RelativeLayout の ID を入力する必要があります。RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.yourRelativeLayoutViewID); で試してください。

于 2012-04-10T12:16:44.477 に答える