2013-11-28 4 views
0

나는 버튼 이름의 배열을 사용하여 수평 레이아웃의 버튼을 만들기 위해 다음 코드를 사용하고 있습니다 :버튼을 눌러 버튼을 만드는 방법은 무엇입니까?

LinearLayout tabView = (LinearLayout) findViewById(R.id.tabView); 
     tabView.setOrientation(LinearLayout.HORIZONTAL); //Can also be done in xml by android:orientation="vertical" 
      for (int i = 0; i < tabButtonNames.length; i++) { 
       Button btnTag = new Button(this); 
       btnTag.setText(tabButtonNames[i]); 
       btnTag.setWidth(50); 
       btnTag.setHeight(14); 
       btnTag.setTextSize(8); 
       btnTag.setId(i); 
       btnTag.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View arg0) { 
         ---the code TODO 
       }); 
       tabView.addView(btnTag); 
      } 

그들은 생성하지만 높이와 setWidth, setHeight 또는 LayoutParam를 사용하여 버튼의 폭을 변경할 수 없습니다. 그런 다음 버튼을 누르면 버튼 레이아웃 배열을 사용하여 세로 레이아웃에 더 많은 버튼 목록을 만들고 싶습니다. 위와 같은 코드를 onClick 메서드에서 사용했지만 버튼을 누르면 응용 프로그램이 충돌합니다. 또한 Button btn=new Button(this)은 onClick에서 사용할 수 없습니다. i-Pad 앱에서이 작업을 쉽게 처리했지만 여기에서 문제가 발생했습니다.

+0

사용 버튼 BTN = New 버튼을 전달 (getApplicationContext()); –

+0

pls 전체 관련 코드를 게시하고 logcat 오류 .. –

답변

6

사용

Button btn = new Button(getApplicationContext()); 

또는

Button btn = new Button(ActivityName.this);

대신

Button btn = new Button(this); 

버튼 문맥을 필요로

. OnClick에서는 활동의 컨텍스트에 액세스 할 수 없습니다.

+0

내 자신의 방법을 사용하고 싶다면 어떻게해야합니까? clickListener를 사용해야합니까? 클릭 버튼에 추가하려면 –

+0

을 입력하십시오. 클릭 리스너를 구현해야합니다. –

1

Button btn=new Button(this) 실제로는 clicklistiner를 참조하는 경우 class, Button btn=new Button(classname.this)을 참조하거나 clickListener 외부에서 간단한 함수를 만들어야합니다.

1

다만 New 버튼의 컨텍스트() 대신 고도의 집합 레이아웃 PARAMS 폭

for (int i = 0; i < tabButtonNames.length; i++) { 
       Button btnTag = new Button(<-Context->);//You need to pass context just write <ActivityName>.this 
       btnTag.setText(tabButtonNames[i]); 
       LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(<width>,<height>);(50,40) 


       //btnTag.setWidth(50); 
       //btnTag.setHeight(14); 
       btnTag.setTextSize(8); 
       btnTag.setId(i); 
       btnTag.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View arg0) { 

         } 



       }); 
       tabView.addView(btnTag); 
       btnTag.setLayoutParams(params) 
} 
관련 문제