Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Tại sao ko add được mảng Control vào trong RelativeLayout

    Mình mới học Android. Đang định thử viết cái ứng dụng nho nhỏ. Mình có 1 vài thắc mắc mong mọi người giúp đỡ.
    1.Tại sao mình ko Add mảng control vào trong Relativelayout đc? mình làm như này. nó ko báo lỗi. nhưng khi run toàn bị Close App thôi.

    private Button[] btn=new Button[10];

    trong hàm Oncreate mình làm như sau.
    RelativeLayout mainLayout=(RelativeLayout)findViewById(mainLayout );
    //Mình đặt tên cái layout trong xml của mình là mainlayout.
    for(int i=0;i<10;i++)
    {
    btn[i].setText(""+i);
    mainLayout.addView(btn[i]);
    }
    Mình thấy nó ko báo lỗi. nhưng khi run app thì bị close App ngay. ko hiểu tại sao. mong mọi người giúp đỡ.
    2. 1 vấn đề tuơng tự là mình làm như này


    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    TableLayout layout = new TableLayout (this);
    layout.setLayoutParams( new TableLayout.LayoutParams(4,5) );

    layout.setPadding(1,1,1,1);
    TableRow tr = new TableRow(this);
    for (int c=0; c<=9; c++) {
    Button b = new Button(this);
    b.setText(""+(c+12));
    b.setTextSize(10.0f);
    b.setTextColor(Color.rgb( 100, 200, 200));
    b.setOnClickListener(myhandler1);
    b.setId(c);
    tr.addView(b, 50,30);
    }
    layout.addView(tr);
    super.setContentView(layout);

    }

    View.OnClickListener myhandler1 = new View.OnClickListener() {
    public void onClick(View v) {
    Button btn=(Button) findViewById(0);
    btn.setText("abc");
    }
    Mình có 1 vài thắc mắc của đoạn code trên.
    - Tại sao khi đưa button vào trong vòng for rồi add vào tableRow thì lại add đc button. và vẫn viết sự kiện đc cho nó. vì theo như mình hiểu. thì các biến nào khai báo trong vòng for chỉ có hiệu lực trong vòng for thôi. ra ngoài vòng for thì bị xóa đi. ko biết mình có hiểu sai ko?
    - Vẫn viết đc sự kiện cho các button trên. nhưng giờ có 10 cái button mà muốn viết cho cả 10 cái. mà phải làm kiểu Button btn=(Button) findViewById(0); thì thật sự là ko hay. có cách nào khác có thể giải quyết vấn đề này ko?
    Mong mọi người giúp đỡ. mình cảm ơn.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    vấn đề đầu tiên là bạn chưa khởi tạo cho từng Button trong mảng nhé

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    cảm ơn bạn. trường hợp đầu đúng là như bạn nói.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    #1. Mảng button chưa đc khởi tạo
    #2. Vì trong vòng for bạn đã khởi tạo button, add button lên tableLayout, và thiết lập sự kiện cho cái button đó. Nên kiểu j bạn cũng thấy nó chạy cả thôi.
    còn việc quản lý 10 cái button static trên xml kiểu những bạn nói chắc có đó, nhưng chắc ko ai rảnh đến mức viết vòng for cho cái đó cả
    viết dynamic bằng java sẽ nhanh hơn nhiều

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •