2013-04-09 9 views
0

두 개의 onClickListeners, A와 B 및 일부 버튼이 할당되어 있다고 가정 해 보겠습니다. onClickListener A에 "속한"각 클릭 된 버튼에 대해 다음 버튼을 클릭 할 때까지 기다리는 방법이 있습니까? 그리고 onClickedListener B에서 그 다음에 어떤 코드를 수행하는 경우 중요하지 않습니다. onClickListener A에서 온 것입니다. 놔두고 아무것도하지 말고 다음 클릭을 기다리고 이전 버튼처럼 기다리십시오.두 개의 onClickListener와 그들 사이의 상호 작용

답변

0

좋아, 그럼 내 질문에 대한 답을 편집했습니다. 그것이 의미가 있으면 알려주세요. 나는 당신을 위해 일하지 않을 것입니다, 그래서 이것은 당신에게 논리가 무엇인지 보여주는 간단한 예입니다.

//This is how you set the TAG so you have it. But I know you use getTag, so I am not sure  
//what you are using it for. 
a1 = (Button) findViewById(R.id.bA1); 
a2 = (Button) findViewById(R.id.bA2); 
b1 = (Button) findViewById(R.id.bB1); 
b2 = (Button) findViewById(R.id.bB2); 
a1.setTag("A"); 
a2.setTag("A"); 
b1.setTag("B"); 
b2.setTag("B"); 


View.OnClickListener listener = new View.onClickListener() { 
    public void onClick(View view) { 
     String tag = (String)view.getTag(); 
     if(tag.equals("A") 
      //example on one B button with assumed TAG of "B" 
      someButton.setOnClickListener(listener); 
      //deregister all your A Views, but again, I'll do one as an example 
      //in this case I'll quickly just deregister the A button or view just clicked 
      view.setOnClickListener(null); 
     else 
      if(tag.equals("B")) { 
       /*I guess do your thing here but deregister all the B views again 
       and register all the A views again*/ 
       someButton.setOnClickListener(null); 
       otherAButton.setOnClickListener(listener); 
      } 
    } 
}); 

그래서 코드를 줄이기 위해 몇 가지 가정을합니다. 예를 들어. A View"A" 태그로 설정하고 setTag 방법을 사용하고 그 반대의 경우 B View으로 설정하십시오. 또한 클릭 수를 듣기 시작하는 A보기를 원한다고 가정합니다. 따라서 활동 또는 단편이 처음 실행될 때 setOnClickListener을 통해 listener을 A보기로 설정하면됩니다.

+0

[이 링크 확인하기] (http://stackoverflow.com/questions/15754577/how-to-disable-interaction-between-buttons-of-the-same-layout) 어쩌면 왜 그런지 알게 될 것입니다. 나는 이것을 물었다. 제가 당신에게 준 링크에서, 제 문제에 대한 해결책을 찾으려고했으나, 제가 여기서 물었던 것처럼 이것을하려고 노력하지 않았습니다. – marjanbaz

+0

오, 이런 경우 A 뷰의 리스너 값을 null로 설정하여 등록을 취소 할 수 있습니다. 따라서 A 값을 클릭하면 B 뷰를 등록하고 A 뷰의 등록을 취소합니다. 위의 예를 통해 간단한 예를 들어 보겠습니다. – Andy

+0

좋아요, 끝나면 알려주세요. 고마워. 나는 지난 달과 행운을 위해 이것을 끝내려고 노력하고있다. – marjanbaz