2011-03-24 6 views
1

다른 활동을 시작하는 버튼이 많습니다. 문제는 버튼을 누를 때 다른 버튼을 누를 수 없기 때문에 2 가지 액티비티 (또는 그 이상)를 시작한다는 것입니다. 둘 중 하나를 누른 후에 다른보기 (단추)를 차단하는 가장 좋은 솔루션은 무엇입니까?하나의 버튼을 누른 후에 다른 버튼 차단

+0

한 번에 하나의 버튼 만 선택해야하는 경우 RadioWidget을 사용하지 않는 이유는 무엇입니까? – Sora

+0

버튼에 관한 것만이 아닙니다 (목록보기 일 수도 있고 다른 것일 수도 있습니다). 새로운 활동을 시작한 후 조회수를 차단하는 것입니다. – Gratzi

답변

1

를 사용하지 않도록하십시오. 리스너에서 ID별로 작업을 전환하십시오.

public .. onClickListener(){ 
// Disable all buttons here.. 
button1.setDisabled(true); 
button2.setDisabled(true); 
button3.setDisabled(true); 
... 
switch(view.getId()){ 
case R.id.button1: 
// Start some activiy ... or do some task... 
break; 
case R.id.button2: 
... 
break;. ... 

} 
onResume()

public .. onResume(){ 
button1.setDisabled(true); 
    button2.setDisabled(true); 
    button3.setDisabled(true); 
} 

에서 모든 버튼을 사용하거나, 이것은 뷰 그룹의 모든보기를 활성화/비활성화하는 것을 시도하는 것을 잊지 마세요

...

private void enableDisableView(View view, boolean enabled) { 
    view.setEnabled(enabled); 

    if (view instanceof ViewGroup) { 
     ViewGroup group = (ViewGroup)view; 

     for (int idx = 0 ; idx < group.getChildCount() ; idx++) { 
      enableDisableView(group.getChildAt(idx), enabled); 
     } 
    } 
} 

view 매개 변수를 모든 버튼이 포함 된 상위 레이아웃으로 전달하십시오.

이 기능은 사용하지 않았지만 제대로 작동합니다. 이 코드를 따라 놀아보십시오.

+0

더 일반적인 접근 방식이 없습니까? 하나는 listviews에도 사용할 수 있습니다. 전체 레이아웃이나 문자를 비활성화하는 것과 같습니다. – Gratzi

+0

@Gratzi, 레이아웃의 모든 자식 뷰 (getChildren() 메서드)를 통과하는 메소드를 작성하고 비활성화 할 수 있습니다. –

+0

레이아웃이 복잡합니다. 검색하기가 쉽지 않습니다. 가능한 경우 전체 레이아웃을 잠그는 것이 더 쉬울 것입니다. – Gratzi

2

각 버튼에 대한 각 onClickListener에서 button.setDisable(true);을 만듭니다. onResume()에서 해당 기능을 사용하도록 설정해야합니다.

0

모든 버튼에 대한 하나의 onClickListener() 추가이이 버튼

button.setEnabled(false); 
관련 문제