1

これは、私が取り組んでいるもののより単純なバージョンです。追加ボタンが押されると、LinearLayout が作成され、EditText ボックス内のテキストで CheckBox も作成されます。次に、CheckBox が新しく作成された LinearLayout に配置され、新しく作成された LinearLayout が既存の LinearLayout (名前付きレイアウト) に配置されます。新しい LinearLayout を作成する必要はないように思えますが、メイン プログラムでは非常に重要です。私の問題は、コードを実行するとアプリが「強制終了」するため、何が間違っているのか、または必要な結果を達成するためのより良いアプローチがあるかどうかを知りたいことです。

package co.cc.*******.toDo;

import co.cc.*******.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.ArrayList;

public class ToDoMainActivity extends Activity implements View.OnClickListener{
    /** Called when the activity is first created. */
    Button bAdd,bremove;
    EditText et;
   // CheckBox cbNew;
    LinearLayout layout;//main layout
    ArrayList<CheckBox> cbNew;//dynamic array of checkBoxes
    ArrayList<LinearLayout> cbLayout;//dynamic array of LinearLayouts
    int index = 0;

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

        bAdd.setOnClickListener(this);
        bremove.setOnClickListener(this);
    }//end method onCreate

    void initialize(){
        bAdd = (Button)findViewById(R.id.bAdd);
        bremove = (Button)findViewById(R.id.bremove);
        et = (EditText)findViewById(R.id.et);
        layout = (LinearLayout)findViewById(R.id.layout);
        cbNew = new ArrayList<CheckBox>();

    }//end method initialize

    public void onClick(View v) {
        // TODO Auto-generated method stub



        switch (v.getId())
        {
        case R.id.bAdd:
            cbLayout.add(index, new LinearLayout(this));//create new layout to store cb
            cbNew.add(index, new CheckBox(this));//create new checkbox
            cbNew.get(index).setText(et.getText().toString()+ index);//set text to text in editText box
            cbLayout.get(index).addView(cbNew.get(index));//add checkbox to newly created layout
            layout.addView(cbLayout.get(index));//add newly created layout to already existing layout
            index ++;
            break;

        }//end switch

                //layout.removeView(cbNew.get(index));

    }//end method onClick

}//end class ToDoMainActivity
4

0 に答える 0