마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

코드에서 하나의 버튼 만들고 xml에서 2개의 버튼을 연결해서 사용해도 되는지요?

0 추천
@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1 = (Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		
		button1 = (Button) findViewById(R.id.button2);
		button1.setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button1:
			intent = new Intent(MY_ACTION);
			Log.e("  --- ", "msg1111111");
			sendBroadcast(intent);
			break;
		case R.id.button2:
			intent = new Intent(MY_ACTION);
			Log.e("  --- ", "msg222222222");
			sendBroadcast(intent);
			break;

		default:
			break;
		}
	}

button1에 xml에서 정의한 button1, button2를 연속으로 등록 하였습니다. 제가 생각하기에는 두번째 등록한 button2만 작동을 해야될거 같은데..xml에서 정의한 button1, button2를 눌렀을때 다 클릭이 먹힙니다. 

자바 코드상에는 button1버튼 하나만 만들고 xml에서 만든 2개의 버튼을 연결해 사용해도 괜찮은지요?

동급최강후니 (140 포인트) 님이 2013년 4월 19일 질문

1개의 답변

0 추천
R.id.button1을 참조하는 버튼에 onclick이 등록되었고 onclick에선 해당 버튼의 id값에 따라 switch문을 수행하므로

코드상 그 후에 button1 에 R.id.button2를 등록했다고 해도 xml에 정의된 버튼의 id는 여전히 R.id.button1이기 때문에

onclick이 동작합니다.

onclick 내의 분기를 if(v == button1) 로 하거나 button1.setonclicklistener(this);를 R.id.button2 참조 후에 한 번만 한다면

R.id.button1의 id를 가진 버튼은 동작하지 않을 것 같습니다.

 

추가적으로 button1 변수를 통해 첫번째 버튼의 상태를 변경한다든가 하는 버튼 제어는 할 수가 없겠죠?
appa (3,380 포인트) 님이 2013년 4월 19일 답변
appa님이 2013년 4월 19일 수정
...